1

テキストが変更されたときに一元化するためにラベルが書かれたアプリがあります。

そのために、EventHandler を介してメソッドを呼び出します。各ラベルに同じメソッドを使用したいのですが、どのラベルがそれを呼び出しているかをメソッドで識別する方法がわかりません。

次のようなコードがある場合:

       lbl_TextChanged(object sender, EventArgs e)
        {
           ..code..
           label1.Location = new Point("label's location");
           ..more code..
        }

別のラベルからそのメソッドを再度呼び出します。どのラベルがそれを呼び出しているかを知るために、そのコードをどのように変更できますか?

解決策助けてくれてありがとう。イベント ハンドラーで何かを作ろうとしたのはこれが初めてで、送信者をキャストする必要があることを知りませんでした。それは私の問題を解決します。

助けてくれてありがとう!

4

2 に答える 2

3

イベント ハンドラー シグネチャ内のsenderオブジェクトは、イベントを発生させたコントロールです。

このオブジェクトをキャストするだけで、すべてのコントロールの情報にアクセスできます。

Label label = sender as Label;

Labelタイプのコントロールのみがこのハンドラー メソッドを持つイベントを発生させると想定しているため、これには少し注意する必要があります。

于 2012-05-30T17:58:39.610 に答える
1

それsenderが目的です:

Point p = ((Label)sender).Location;
// adjust p 
label1.Location = p;
于 2012-05-30T17:59:01.590 に答える