2008-09-17 14 views
2

J'ajoute par programme des éléments ToolStripButton à un menu contextuel.Comment câbler des événements ToolStripButton par programmation en C#?

Cette partie est facile. Cependant, je dois également câbler les événements de sorte que lorsque l'utilisateur clique sur l'élément, quelque chose se passe réellement!

Comment faire? La méthode qui gère le clic doit également recevoir une sorte d'ID ou d'objet qui se rapporte au ToolStripButton particulier sur lequel l'utilisateur a cliqué.

Répondre

3

Vous ne pouviez pas vous abonner à l'événement Click? Quelque chose comme ceci:

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

Et OnBtnClicked serait déclarée comme ceci:

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

    // handle the button click 
} 

L'expéditeur doit être le ToolStripButton, vous pouvez lancer et faire tout ce que vous devez faire.

0

Merci pour votre aide avec ce Andy. Mon seul problème est maintenant que l'AutoSize ne fonctionne pas sur les ToolStripButtons que j'ajoute! Ils sont tous trop étroits.

C'est plutôt bizarre parce que ça fonctionnait plus tôt.


Mise à jour: Il y a définitivement un problème avec AutoSize pour les ToolStripButtons créés par programme. Cependant, j'ai trouvé une solution:

  1. Créez le ToolStripButton.
  2. Créez un contrôle d'étiquette et définissez les propriétés de police pour correspondre à votre bouton.
  3. Définissez le texte de l'étiquette correspondant à votre bouton.
  4. Définissez l'étiquette sur AutoSize.
  5. Lire la largeur de l'étiquette et l'utiliser pour définir la largeur du ToolStripButton.

Il est hacky, mais cela fonctionne.