tjena Vilken eventhandler är det du vill komma åt? Du får nog förklara mer ingående vad det är du vill åstadkomma. Det jag vill komma åt är när man ändrar på Enable till true/false så vill jag snappa upp den händelsen i min panel klass, och i mitt fall köra show/hide på panelen. Ok, om du vill veta i din ärvda panel när någon sätter enabled=falseproblem med event handlers
Det jag vill göra är.....
Jag ett tomt formulär och en klass som ärver en panel objektet. Panelen ska visas på formuläret (panelen finns i en dll file och formuläret i en vanlig exe). Genom att klicka på olika knappar på formuläret ska man kunna byta panel.
Jag har tänkt gömma/visa panelen på enable eventen.
Men hur gör jag för att komma åt event handlern för panelen??
det jag har är i class filen....
<code>
....
this.EnabledChanged += new System.EventHandler(MusicPanel_EnabledChanged);
......
private void MusicPanel_EnabledChanged(object sender, System.EventArgs e)
{
if(this.Enabled==true)
MessageBox.Show(this.Name + " show");
//this.Show();
else
MessageBox.Show(this.Name + " hide");
//this.Hide();
}
</code>
på formuläret har jag
<code>
private void picMusic_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
......
MusicPanel.Enabled = true;
........
}
</code>
sen har jag ett par knappar till som ska gömma respektive visa olika panelerl.
tack på förhand
PeterSv: problem med event handlers
Sv: problem med event handlers
Måste jag programmera event-handlern på formuläret där min panel klass ligger eller kan jag programmera den i själva klassen som ärver från panel objektet?! Skulle det gå att programmera den direkt i klassen så skulle man ju få bort en del kod från forumläret vilket skulle vara bra i mitt fall.Sv: problem med event handlers
så kan du antingen lyssna på ditt eget even EnabledChange (mindre snyggt)
Alternativet är att overrida metoden OnEnabledChanged, glöm bara inte att skicka vidare till basklassen...
Ex:
protected override void OnEnabledChanged(System.EventArgs e)
{
if(this.Enabled==true)
MessageBox.Show(this.Name + " show");
else
MessageBox.Show(this.Name + " hide");
base.OnEnabledChanged(e); //VIKTIGT!!!skicka vidare till basklassen ifall nån lyssnar på events etc...
}