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.

È stato utile?

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:

  1. Crea il ToolStripButton.
  2. Crea un controllo etichetta e imposta le proprietà del carattere in modo che corrispondano al tuo pulsante.
  3. Imposta il testo dell'etichetta in modo che corrisponda al pulsante.
  4. Imposta l'etichetta su Dimensioni automatiche.
  5. Leggere la larghezza dell'etichetta e utilizzarla per impostare la larghezza di ToolStripButton.

È complicato, ma funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top