2016-04-03 14 views
0

複数の要素に空白を使用しています。ボタン、ラベル、ピクチャボックスなど。送信者の要素タイプを取得する(Button、PictureBoxなど)

しかし、私はいくつかの送信者の変数を変更する必要があります。

private void FareSurukle(object sender, MouseEventArgs e) 
{ 
    MessageBox.Show(((TYPE_COMES_HERE)sender).Name);  
} 

私はピクチャボックスに「TYPE_COMES_HERE」を編集した場合、それはピクチャボックス上で動作:このような名前、トップとして、これは私のコードです...などを残しました。しかし、それは他の要素にエラーを与えます。ボタンのように。

送信者のタイプを宣言することなく、送信者の変数を取得して変更することはできますか?または、私は送信者の型チェックを行うことができますか?

答えて

4

は、

を残しました

正確なタイプを検査する必要はありません。あなたはすべての言及適切Controlという名前のすべてのこれらのプロパティが含まれている基本クラスから継承するコントロール:

MessageBox.Show(((Control)sender).Name); 
+0

ありがとう!それはまさに私が望むように働く。私もこれについて考えましたが、彼らは "コントロール"と呼ばれていたのか分かりませんでした。私は "Type、Element"のような他のものを試しました... – Eren

+0

[MSDNの継承ツリーをチェックしてください](https://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox() v = .110).aspx)。 – CodeCaster

2

あなたはnullない場合は、各タイプにキャストしようとすると、それに何かを行うことができます:私は、そのような名前、トップとして送信者のプロパティの一部を変更する必要が

var button = sender as Button; 
if (button != null) 
{ 
    // do something with button 
} 
var pictureBox = sender as PictureBox; 
if (pictureBox != null) 
{ 
    // do something with pictureBox 
} 
0
private void FareSurukle(object sender, MouseEventArgs e) 
{ 
    if (sender is PictureBox) 
    { 
     // do something 
    } 
    else if (sender is Label) 
    { 
     // do something 
    } 
    else if (sender is Button) 
    { 
     // do something 
    } 
} 
関連する問題