6

という名前のフィールドを持つカスタム ボタンを作成しましたData

実行時にこのボタンをプログラムで winform に追加し、追加時にクリック イベントも定義します。実際にはメソッドは 1 つしかなく、新しく追加されたボタンをこのメソッドにサブスクライブします。

しかし、クリックイベントでは、このDataフィールドにアクセスしてメッセージボックスとして表示したいのですが、私のキャストが正しくないようです:

    CustomButton_Click(object sender, EventArgs e)
    {
        Button button;
        if (sender is Button)
        {
            button = sender as Button;
        } 

        //How to access "Data" field in the sender button? 
        //button.Data  is not compiling!
    }

アップデート:

申し訳ありませんが.Data、インテリセンスに表示されない「コンパイルされていません」と言及しています...

4

3 に答える 3

8

Data フィールドを持つカスタム クラスの型にキャストする必要があります。

何かのようなもの:

YourCustomButton button = sender as YourCustomButton;
于 2012-07-08T22:02:43.500 に答える
3

カスタム ボタン タイプがCustomButtonであると仮定すると、代わりにこれを行う必要があります。

CustomButton_Click(object sender, EventArgs e){
  CustomButton button = sender as CustomButton;
  if (button != null){
      // Use your button here
  } 
}
于 2012-07-08T22:03:56.390 に答える
3

変数を設定したくない場合の簡単な方法は次のとおりです。

((CustomButton)sender).Click

またはあなたが望むものは何でも。

于 2019-04-26T21:04:53.263 に答える