Come posso collegare a livello di codice gli eventi ToolStripButton in C#?
-
01-07-2019 - |
Domanda
Sto aggiungendo a livello di codice elementi ToolStripButton a un menu contestuale.
Quella parte è facile.
this.tsmiDelete.DropDownItems.Add("The text on the item.");
Tuttavia, devo anche collegare gli eventi in modo che quando l'utente fa clic sull'elemento accada effettivamente qualcosa!
Come faccio a fare questo?Il metodo che gestisce il clic deve inoltre ricevere una sorta di ID o oggetto correlato al particolare ToolStripButton su cui l'utente ha fatto clic.
Soluzione
Non potresti semplicemente iscriverti all'evento Click?Qualcosa come questo:
ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);
E OnBtnClicked verrebbe dichiarato in questo modo:
private void OnBtnClicked(object sender, EventArgs e)
{
ToolStripButton btn = sender as ToolStripButton;
// handle the button click
}
Il mittente dovrebbe essere ToolStripButton, quindi puoi trasmetterlo e fare tutto ciò che devi fare con esso.
Altri suggerimenti
Grazie per il tuo aiuto, Andy.Il mio unico problema ora è che AutoSize non funziona sui ToolStripButtons che sto aggiungendo!Sono tutti troppo stretti.
È piuttosto strano perché funzionava prima.
Aggiornamento:C'è sicuramente qualcosa di sbagliato in AutoSize per i ToolStripButtons creati a livello di codice.Tuttavia, ho trovato una soluzione:
- Crea il ToolStripButton.
- Crea un controllo etichetta e imposta le proprietà del carattere in modo che corrispondano al tuo pulsante.
- Imposta il testo dell'etichetta in modo che corrisponda al pulsante.
- Imposta l'etichetta su Dimensioni automatiche.
- Leggere la larghezza dell'etichetta e utilizzarla per impostare la larghezza di ToolStripButton.
È complicato, ma funziona.