2016-04-03 7 views
0

Ich verwende eine Lücke für mehrere Elemente. Wie Knöpfe, Aufkleber, Bildkästen ....Erhalten Sie den Elementtyp des Absenders (Button, PictureBox etc ..)

Aber ich muss einige der Variablen des Absenders ändern. Wie Name, oben, links etc ... Das ist mein Code:

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

Wenn i "TYPE_COMES_HERE" zu PictureBox bearbeiten, funktioniert es auf PictureBox. Aber es gibt Fehler bei anderen Elementen. Wie Knöpfe.

Ist es möglich, Absendervariablen zu erhalten und zu ändern, ohne ihren Typ zu deklarieren? Oder kann ich mit if's eine Typüberprüfung des Absenders vornehmen?

Antwort

4

Ich brauche einige der Absender Eigenschaften, wie Name, oben zu ändern, links

Sie müssen nicht den genauen Typ dafür überprüfen. Die Steuerelemente, die Sie erwähnen, erben alle von einer Basisklasse, die alle diese Eigenschaften enthält, passenderweise Control:

+0

Vielen Dank! Es funktioniert genau so, wie ich es wollte. Ich dachte auch darüber nach, aber ich wusste nicht, dass sie "Kontrolle" genannt wurden. Ich habe versucht, andere Dinge wie "Typ, Element" ... – Eren

+0

Sie können [Überprüfen Sie die Vererbungsstruktur auf MSDN] (https://msdn.microsoft.com/en-us/library/system.windows.forms.picturebox (v = vs.110) .aspx). – CodeCaster

2

Sie können versuchen, auf jede Art Gießen und mit ihm etwas tun, wenn nicht 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 
    } 
}