teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/09/22 10:22

投稿

gentaro
gentaro

スコア8947

answer CHANGED
@@ -13,4 +13,33 @@
13
13
  {
14
14
  InitializeComponent();
15
15
  }
16
- ```
16
+ ```
17
+
18
+ ### 追記
19
+
20
+ > メインフォームのシングルトンパターンを作成し,静的クラスの共通関数からメインフォームにアクセスできないかと考えたのですが
21
+
22
+ 無意味です。
23
+ シングルトンはインスタンスが一つであることを保証するだけです。
24
+ そもそもWinFormsの標準テンプレートでメインフォームとなる画面はProgram.csの
25
+
26
+ ```csharp
27
+ Application.Run(new Form1());
28
+ ```
29
+
30
+ の部分で生成されるものが一つだけで、わざわざコンストラクタを呼び出して同じ画面のインスタンスを作成するようなプログラムでなければ、シングルトンにするまでもなく一つしかありません。
31
+
32
+
33
+ > メインフォームのボタンが13個あるので,上記URLのやり方を取り入れると,変更箇所が多いので,共通関数を作ってそれをコールしたいと考えています。
34
+
35
+ ボタンが何個あろうと、Form.Controlsプロパティにからそのフォームの子コントロールを全て取得できるので
36
+
37
+ ```csharp
38
+ foreach (Control c in this.Controls)
39
+ {
40
+ if (c is Button b)
41
+ b.Enabled = false;
42
+ }
43
+ ```
44
+
45
+ こういうコードを書けば「その画面上の全てのボタン」のプロパティは変更できます。

1

誤字

2020/09/22 10:22

投稿

gentaro
gentaro

スコア8947

answer CHANGED
@@ -1,4 +1,4 @@
1
- とりあえずエラーを治したいなら
1
+ とりあえずエラーを治したいなら
2
2
 
3
3
  ```diff
4
4
  namespace WindowsFormsApp1