Frage

Ich füge programmatisch Toolstripbutton Elemente zu einem Kontextmenü aus.

Dieser Teil ist einfach.

this.tsmiDelete.DropDownItems.Add("The text on the item.");

Ich brauche aber auch die Ereignisse verkabeln, so dass, wenn der Benutzer tatsächlich das Element etwas klickt passiert!

Wie mache ich das? Die Methode, die den Klick Griffe muss auch eine Art von ID oder Objekt erhalten, die auf die jeweilige Toolstripbutton bezieht, dass der Benutzer geklickt hat.

War es hilfreich?

Lösung

Könnten Sie nicht abonnieren Sie das Click-Ereignis? So etwas wie folgt aus:

ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);

Und OnBtnClicked würde wie folgt erklärt werden:

private void OnBtnClicked(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;

    // handle the button click
}

Der Absender sollte die Toolstripbutton, so dass Sie es werfen kann und tun, was Sie damit tun müssen.

Andere Tipps

Vielen Dank für Ihre Hilfe bei diesem Andy. Mein einziges Problem ist jetzt, dass der Auto-Size nicht auf dem ToolStripButtons arbeiten, die ich hinzufüge! Sie sind alle zu eng.

Es ist ziemlich seltsam, weil es früher gearbeitet hat.


Update: Es gibt definitiv etwas falsch mit Autosize für programmatisch erstellt ToolStripButtons. Allerdings fand ich eine Lösung:

  1. Erstellen Sie den Toolstripbutton.
  2. Erstellen Sie ein Label-Steuerelement und legen Sie die Schrifteigenschaften Ihre Taste entsprechen.
  3. Geben Sie den Text des Etiketts Ihre Taste entsprechen.
  4. Stellen Sie das Etikett auf Autosize.
  5. Lesen Sie die Breite des Etiketts und verwenden, die die Breite des Toolstripbutton zu setzen.

Es ist hacky, aber es funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top