回答編集履歴

3

修正

2024/04/23 04:48

投稿

nururi
nururi

スコア167

test CHANGED
@@ -43,7 +43,7 @@
43
43
  (フォームデザイナ上での値)
44
44
  ![フォームデザイナ上での値](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-23/33f93ef3-04fe-4b0a-9dea-390c4e8ca548.png)
45
45
 
46
- 原因は、既に他の方が言われているようにフォームデザイナで実行されてはいけない処理が実行されていることに起因していると思うので、フォームデザイナで実行されているかどうかを判定してLoadイベントの処理を行わないようにすればいいのですが、入れ子になっているコントロールはDesignModeが正しく機能しないので、昔はそのような場合は他サイトを参考にして上記のような感じの処理を使っていました。(情報元は忘れました)
46
+ 原因は、既に他の方が言われているようにフォームデザイナで実行されてはいけない処理が実行されていることに起因していると思うので、フォームデザイナで実行されているかどうかDesignModeプロパティを判定してLoadイベントの処理を行わないようにすればいいのですが、入れ子になっているコントロールはDesignModeプロパティが正しく機能しないので、昔はそのような場合は上記のような感じの処理で判定していました。(情報元は忘れました)
47
47
  本当に正しいやり方なのか?という確信は持っていません。また、コンストラクタでは機能しません。
48
48
 
49
49
  Loadイベントの他にも、フォームデザイナからコントロールのイベントハンドラが実行される場合もあるので、そういう箇所でDB処理をやっているなら、同じように判定して回避する必要があります。

2

修正

2024/04/23 04:40

投稿

nururi
nururi

スコア167

test CHANGED
@@ -40,8 +40,8 @@
40
40
  private static bool? _DesignModeEx;
41
41
  }
42
42
  ```
43
-
43
+ (フォームデザイナ上での値)
44
- ![フォームデザイナでの表示](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-23/33f93ef3-04fe-4b0a-9dea-390c4e8ca548.png)
44
+ ![フォームデザイナでの](https://ddjkaamml8q8x.cloudfront.net/questions/2024-04-23/33f93ef3-04fe-4b0a-9dea-390c4e8ca548.png)
45
45
 
46
46
  原因は、既に他の方が言われているようにフォームデザイナで実行されてはいけない処理が実行されていることに起因していると思うので、フォームデザイナで実行されているかどうかを判定してLoadイベントの処理を行わないようにすればいいのですが、入れ子になっているコントロールはDesignModeが正しく機能しないので、昔はそのような場合は他サイトを参考にして上記のような感じの処理を使っていました。(情報元は忘れました)
47
47
  本当に正しいやり方なのか?という確信は持っていません。また、コンストラクタでは機能しません。

1

修正

2024/04/23 04:38

投稿

nururi
nururi

スコア167

test CHANGED
@@ -6,8 +6,7 @@
6
6
  {
7
7
  try
8
8
  {
9
- // 前回判定したキャッシュ値がある場合はそれを返す
10
- if (_DesignModeEx != null)
9
+ if (_DesignModeEx.HasValue )
11
10
  return _DesignModeEx.Value;
12
11
 
13
12
  // LicenseManagerがDesigntimeかどうかを検出する
@@ -17,8 +16,8 @@
17
16
  return _DesignModeEx.Value;
18
17
  }
19
18
 
20
- // コントロールのDesignModeを親まで辿って判定する
19
+ // コントロールのDesignModeを親まで辿って判定する
21
- // 最上位コントロールのみDesignModeを検出できる
20
+ // 最上位コントロールのみDesignModeを検出できる
22
21
  var ctrlTmp = ctrl;
23
22
  while (ctrlTmp != null)
24
23
  {