C# object senderの上手の活用方法 への返答
    投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
        投稿者 魔界の仮面弁士  (社会人)
        
        投稿日時 
            2023/12/22 15:15:49
        
    
    
        質問の意図としては「sender の使用例を知りたい」ということでよろしいでしょうか。
では実験的に、【三目並べ】ゲームの雛形を作ってみましょう。
Windows Forms において、フォームに TableLayoutPanel を貼り、
TableLayoutPanel1 のプロパティを
・ RowCount = 3
・ ColumnCount = 3
・ CellBorderStyle = OutsetDouble
に設定します。
3 行 3 列のマス目ができるので、それぞれのセルに Label を貼っていきます。
そしてデザイン時に、Ctrl/Shift のいずれかを押しながら、それらのラベルを順にクリックして、
9 つのラベルだけが選択された状態にしたうえで、それらすべてに対して
・Anchor プロパティを Top, Bottom, Left, Right に変更
・TextAlign プロパティを MiddleCenter に変更
・Text プロパティを、" " (全角空白) にしておく
と設定していきます。
さらに、9 つのラベルすべてが選択された状態でプロパティの⚡アイコンを押して
イベント一覧に切り替え、Click イベントの欄に「labels_Click」と記述します。
そうすると、”private void labels_Click(object sender, EventArgs e)” が生成され、
その一つのイベントハンドラに対して、9 つの Label が割り当てられた状態になります。
イベント引数 sender に、クリックされたラベルが渡されるので、
イベントハンドラを 9 つ用意せずとも、一つのイベントハンドラを共通利用できるわけです。
    
では実験的に、【三目並べ】ゲームの雛形を作ってみましょう。
Windows Forms において、フォームに TableLayoutPanel を貼り、
TableLayoutPanel1 のプロパティを
・ RowCount = 3
・ ColumnCount = 3
・ CellBorderStyle = OutsetDouble
に設定します。
3 行 3 列のマス目ができるので、それぞれのセルに Label を貼っていきます。
そしてデザイン時に、Ctrl/Shift のいずれかを押しながら、それらのラベルを順にクリックして、
9 つのラベルだけが選択された状態にしたうえで、それらすべてに対して
・Anchor プロパティを Top, Bottom, Left, Right に変更
・TextAlign プロパティを MiddleCenter に変更
・Text プロパティを、" " (全角空白) にしておく
と設定していきます。
さらに、9 つのラベルすべてが選択された状態でプロパティの⚡アイコンを押して
イベント一覧に切り替え、Click イベントの欄に「labels_Click」と記述します。
そうすると、”private void labels_Click(object sender, EventArgs e)” が生成され、
その一つのイベントハンドラに対して、9 つの Label が割り当てられた状態になります。
イベント引数 sender に、クリックされたラベルが渡されるので、
イベントハンドラを 9 つ用意せずとも、一つのイベントハンドラを共通利用できるわけです。
// 現在のターン数
private int turnCount = 0;
// クリックするごとに、○と×を交互に配置していく
private void labels_Click(object sender, EventArgs e)
{
    // ★ sender はクリックされた Label を表している ★ 
    var lbl = (Label)sender;
    // ○×がセット済みなら抜ける
    if (lbl.Text == "×" || lbl.Text == "○") { return; }
    // ターン数を増やす
    turnCount++;
    // 先手なら○、後手なら×を表示 
    lbl.Text = "×○"[turnCount % 2].ToString();
    // 何行目何列目のボタンが押されたのかを
    // 確認するため、タイトルバーにセル番号を記述
    var pos = tableLayoutPanel1.GetCellPosition(lbl);
    this.Text = "Click:" + pos.Column + ", " + pos.Row;
    // 余力があれば、ここに三目並べの勝敗判定を記述していく
    /*
    ** ・縦横斜めのいずれかが揃っていれば、勝敗表示をしてゲーム終了処理
    ** ・揃っていなくて turnCount が 9 に達していれば、引き分け処理
    ** ・揃っていなくて turnCount が 9 未満なら、何もせずそのままゲーム継続
    */
}
        投稿者 とくま  (社会人)
        
        投稿日時 
            2023/12/22 13:21:39
        
    
    
        上手も何も、イベント関数も関数なのだから、
対象だけ違って同じ処理をまとめられるというだけでは?
関数は流石に使ったことあるのでは?
異なる対象を引数で渡すように作りませんでしたか?
それと特別変わらないと思います。
複数の同じ種類のコントロールに同じ処理を適用したい
という必要性が無いと、使わないものでしょう。
ドラックアンドドロップの処理を追加するとか、
ファイルを複数指定するときに、すべてのテキストボックスを
ファイルを開くダイアログと連携させるとか。
    
    
対象だけ違って同じ処理をまとめられるというだけでは?
関数は流石に使ったことあるのでは?
異なる対象を引数で渡すように作りませんでしたか?
それと特別変わらないと思います。
複数の同じ種類のコントロールに同じ処理を適用したい
という必要性が無いと、使わないものでしょう。
ドラックアンドドロップの処理を追加するとか、
ファイルを複数指定するときに、すべてのテキストボックスを
ファイルを開くダイアログと連携させるとか。
        投稿者 ケンケン  (社会人)
        
        投稿日時 
            2023/12/22 11:50:22
        
    
    
        		private void AmountBtn_Click(object sender, EventArgs e)
{
割愛
}
イベントを作成した時、パラメータの箇所に(object sender, EventArgs e)
が表示されますが、object senderの上手の活用方法があれば、ご教授お願いします。
※ 自分なりに活用した事な無い者です。
         
 
    
    
{
割愛
}
イベントを作成した時、パラメータの箇所に(object sender, EventArgs e)
が表示されますが、object senderの上手の活用方法があれば、ご教授お願いします。
※ 自分なりに活用した事な無い者です。
色々と参考にさせていただきます。