Question

J'ajoute par programme des éléments ToolStripButton à un menu contextuel.

Cette partie est facile.

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

Toutefois, je dois également câbler les événements pour que, lorsque l'utilisateur clique sur l'élément, quelque chose se passe réellement!

Comment je fais ça? La méthode qui gère le clic doit également recevoir un identifiant ou un objet associé au ToolStripButton particulier sur lequel l'utilisateur a cliqué.

Était-ce utile?

La solution

Ne pourriez-vous pas simplement vous abonner à l'événement Click? Quelque chose comme ça:

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

Et OnBtnClicked serait déclaré 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, afin que vous puissiez le lancer et faire tout ce que vous devez faire.

Autres conseils

Merci pour votre aide avec Andy. Mon seul problème maintenant est que la taille automatique ne fonctionne pas sur les boutons ToolStrip que j'ajoute! Ils sont tous trop étroits.

C'est plutôt étrange car cela fonctionnait plus tôt.

Mise à jour: AutoSize a définitivement un problème 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 la police pour correspondre à votre bouton.
  3. Définissez le texte de l'étiquette pour qu'il corresponde à votre bouton.
  4. Définissez le libellé sur AutoSize.
  5. Lisez la largeur de l'étiquette et utilisez-la pour définir la largeur du ToolStripButton.

C'est hacky, mais ça marche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top