Hallo Leute,
mit dieser Funktion steuere ich alle ToolStripButtons in einem ToolStrip, wenn ein Click-Ereignis ausgelöst wird:
private void ToolStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
switch (this.ToolStrip.Items.IndexOf(e.ClickedItem))
{
case 0:
Cursor.Current = Cursors.WaitCursor;
Cursor.Current = Cursors.Default;
break;
...
Nun ist meine Frage, ob es auch eine Möglichkeit gibt, über eine Funktion alle Hover Ereignisse in einem ToolStrip zu steuern.
Mein Ziel ist, dass in dem ToolStrip zu jedem Button noch ein Text im Statusstrip erscheint.
Ich hoffe ihr könnt mir helfen...
Jedes ToolStripItem verfügt doch über ein MouseHover-Ereignis.
Ja das weiß ich, aber ich würde gerne nur eine Funktion benutzen, die über switch case die einzelnen hover anspricht
Das ist schwer aber wie wäre es damit?
Form1_Load(object sender, EventArgs e)
{
foreach(ToolStripItem toolstripitem in ToolStripMenuItem.DropDownItems)
{
toolstripitem.MouseHover += new System.EventHandler(toolstripitem_MouseHover);
}
}
toolstripitem_MouseHover(object sender, EventArgs e)
{
//Aktionen mit "sender" ausführen
}
Gruß,
C#ler
In theory, there is no difference between theory and practice. But, in practice, there is.
The nice thing about the Java API is that if you don't like it, just wait two minutes — it will change. Doug Lyon
Dann registriere einfach für alle deine ToolStripItems eine Methode und werte dadrin dann den sender aus:
void item_MouseHover(object sender, EventArgs e)
{
ToolStripItem item = sender as ToolStripItem;
if(item != null)
{
int index = toolStrip.Items.IndexOf(item);
// hier mit item oder index arbeiten
statusStripLabel.Text = item.Text; // Test
}
}
C#ler war zwar etwas schneller, aber ich dafür ausführlicher 😜
P.S.
Cursor.Current = Cursors.WaitCursor;
Cursor.Current = Cursors.Default;
ist ziemlich sinnlos so...
Ja das weiß ich, aber ich würde gerne nur eine Funktion benutzen, die über switch case die einzelnen hover anspricht
Öhm - das ist aber keine gute Idee...
Warum ein Switch-Case bauen, wenn es auch ohne deutlich einfacher ginge?
Schaue lieber einmal, dass du die Texte z.B. in einem Dictionary speicherst und somit nur noch eine gemeinsame Methode brauchst (ohne Spezialbehandlung der einzelnen Items).
Evtl. kannst du sogar eine Komponente ähnlich dem ToolTipProvider schreiben (findet man vielleicht sogar schon irgendwo was Fertiges).
Dann registriere einfach für alle deine ToolStripItems eine Methode und werte dadrin dann den sender aus:
Ich hab auch nur eine Methode die ich allen ToolStripItems zuweise. Du hast die EventHandler-Zuweisung vergessen.
In theory, there is no difference between theory and practice. But, in practice, there is.
The nice thing about the Java API is that if you don't like it, just wait two minutes — it will change. Doug Lyon
Cursor.Current = Cursors.WaitCursor;
Cursor.Current = Cursors.Default;
Das war nur ein Platzhalter...
Vielen Dank für eure Ideen, es funktioniert.
Hi C#ler,
da hast du mich wohl mißverstanden. Mein Beitrag bezog sich nur auf den Eingangspost von Martinar.