回答編集履歴

2

コード内コメントの微修正

2023/08/04 01:33

投稿

fana
fana

スコア12181

test CHANGED
@@ -20,7 +20,9 @@
20
20
  }
21
21
 
22
22
  //複数のボタンで使うハンドラ.
23
+ //sender を見て処理を決める.
23
- //sender を見て処理を決める.下記は if else でやっているが,実際の分岐方法はいろいろと考えられるかと.
24
+ //下記は if else でやっているが,実際の分岐方法はいろいろと考えられるかと.
25
+ //(例えば,各ボタンの Tag にそれ用の何かを仕込んでおくとか?)
24
26
  //
25
27
  //分岐結果として Form1 の個別のメソッドを呼ぶような話になるのであれば「メソッド数を減らす」効果を得られないが,
26
28
  //例えばロジック処理を実装しているような別のやつの処理を呼ぶとかであれば,Form1 のメソッド数は減る.

1

追記

2023/08/04 01:22

投稿

fana
fana

スコア12181

test CHANGED
@@ -3,3 +3,34 @@
3
3
  というだけの話なのであれば,IDEの機能で所望のメソッドを探すとか,#region~#endregion で不必要な時にはイベント群のコードを折りたたむとかその程度で済ませておけば良いようにも思えますが.
4
4
 
5
5
  あるいは,「カテゴリ」がボタン群の配置的にもまとまっているようであれば,カテゴリ毎のユーザコントロールに分ければどうでしょうか.
6
+
7
+ ---
8
+
9
+ 追記:
10
+ 有用な場面は限られるかもしれませんが,以下のようにすれば「メソッドの数」を減らすことができるかもしれません.
11
+
12
+ ```C#
13
+ public Form1()
14
+ {
15
+ InitializeComponent();
16
+
17
+ //複数のボタンで同じハンドラを使う
18
+ this.button1.Click += this.button_Click;
19
+ this.button2.Click += this.button_Click;
20
+ }
21
+
22
+ //複数のボタンで使うハンドラ.
23
+ //sender を見て処理を決める.下記は if else でやっているが,実際の分岐方法はいろいろと考えられるかと.
24
+ //
25
+ //分岐結果として Form1 の個別のメソッドを呼ぶような話になるのであれば「メソッド数を減らす」効果を得られないが,
26
+ //例えばロジック処理を実装しているような別のやつの処理を呼ぶとかであれば,Form1 のメソッド数は減る.
27
+ private void button_Click(object sender, EventArgs e)
28
+ {
29
+ if( sender == button1 )
30
+ { MessageBox.Show( "1" ); }
31
+ else if( sender == button2 )
32
+ { MessageBox.Show( "2" ); }
33
+ else
34
+ { MessageBox.Show( "Unknown" ); }
35
+ }
36
+ ```