このようなケースの場合、switch を使うよりも、共通処理を別のメソッドに切り分け、各々のイベントハンドラで対応するほうが適切かもしれません。イベントハンドラはなるべく太らせないようにした方が可読性が高くなるケースが多いと思います。
C#
1private void 共通処理(string text)
2{
3 MessageBox.Show(text);
4}
5
6private void TextBox1_TextChanged(object sender, EventArgs e)
7{
8 if (!(sender is TextBox tb)) return;
9 共通処理(tb.Text);
10 // 個別処理
11}
12
13private void TextBox2_TextChanged(object sender, EventArgs e)
14{
15 if (!(sender is TextBox tb)) return;
16 共通処理(tb.Text);
17 // 個別処理
18}
switch を使う場合には Tag を使わなくても Name で十分です。
C#
1private void TextBox_TextChanged(object sender, EventArgs e)
2{
3 if (!(sender is TextBox tb)) return;
4 switch (tb.Name)
5 {
6 case "textBox1":
7 case "textBox2":
8 // textBox1, textBox2 の処理
9 break;
10 case "textBox3":
11 // textBox3 の処理
12 break;
13 default:
14 // その他のテキストボックスの処理
15 break;
16 }
17}
Tag には任意のオブジェクトを入れることができるので、例えば次のような使い方ができます。
C#
1public Form1()
2{
3 InitializeComponent();
4 button1.Tag = "1";
5 button2.Tag = "2";
6 button3.Tag = "+";
7}
8
9private void Button_Click(object sender, EventArgs e)
10{
11 if (!(sender is Button b)) return;
12 textBox1.Text += b.Tag?.ToString();
13}
button1, button2, button3 のすべてのクリックイベントに Button_Click を関連付けると、それぞれのボタンを押したときに Tag で指定した文字列がテキストボックスに追加されます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。