2008-09-17 11 views
2

Ich programmiere programmgesteuert ToolStripButton-Elemente zu einem Kontextmenü.Wie programmiere ich ToolStripButton-Ereignisse programmgesteuert in C#?

Dieser Teil ist einfach.

Allerdings muss ich auch die Ereignisse verdrahten, so dass, wenn der Benutzer das Element klickt etwas tatsächlich passiert!

Wie mache ich das? Die Methode, die den Klick verarbeitet, muss auch eine Art ID oder ein Objekt erhalten, das sich auf den bestimmten ToolStripButton bezieht, auf den der Benutzer geklickt hat.

Antwort

3

Konnten Sie nicht einfach das Click-Ereignis abonnieren? 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 sein, so können Sie es werfen und tun, was Sie mit ihm tun müssen.

0

Danke für Ihre Hilfe mit diesem Andy. Mein einziges Problem ist jetzt, dass die AutoSize nicht an den ToolStripButtons arbeitet, die ich hinzufüge! Sie sind alle zu eng.

Es ist eher seltsam, weil es früher funktioniert hat.


Update: Es ist definitiv etwas falsch mit Autosize für programmatisch erstellt ToolStripButtons. Ich habe jedoch eine Lösung gefunden:

  1. Erstellen Sie den ToolStripButton.
  2. Erstellen Sie ein Beschriftungssteuerelement, und legen Sie die Schrifteigenschaften so fest, dass sie Ihrer Schaltfläche entsprechen.
  3. Legen Sie den Beschriftungstext entsprechend Ihrer Schaltfläche fest.
  4. Setzen Sie die Beschriftung auf AutoSize.
  5. Lesen Sie die Breite des Labels und verwenden Sie diese, um die Breite des ToolStripButton festzulegen.

Es ist hacky, aber es funktioniert.

Verwandte Themen