Esiste un modo semplice (5 righe di codice) per farlo?Chiudi scheda sul controllo struttura winforms con il pulsante centrale del mouse
8
A
risposta
20
Il codice più breve per eliminare la scheda su cui è stato fatto clic sul pulsante centrale del mouse è utilizzando LINQ.
Assicurarsi che l'evento è cablatathis.tabControl1.MouseClick += tabControl1_MouseClick;
E per il gestore di sé
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
var tabControl = sender as TabControl;
var tabs = tabControl.TabPages;
if (e.Button == MouseButtons.Middle)
{
tabs.Remove(tabs.Cast<TabPage>()
.Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location))
.First());
}
}
E se si sta cercando per la minor quantità di linee, qui è in una linea
tabControl1.MouseClick += delegate(object sender, MouseEventArgs e) { var tabControl = sender as TabControl; var tabs = tabControl.TabPages; if (e.Button == MouseButtons.Middle) { tabs.Remove(tabs.Cast<TabPage>().Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location)).First()); } };
-1
Si potrebbe fare questo:
private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Middle)
{
// choose tabpage to delete like below
tabControl1.TabPages.Remove(tabControl1.TabPages[0]);
}
}
In pratica si sono solo la cattura di un clic del mouse sul controllo scheda e l'eliminazione di una sola pagina, se il tasto centrale è stato cliccato.
6
soluzione senza LINQ non così compatto e bello, ma anche attuale:
private void TabControlMainMouseDown(object sender, MouseEventArgs e)
{
var tabControl = sender as TabControl;
TabPage tabPageCurrent = null;
if (e.Button == MouseButtons.Middle)
{
for (var i = 0; i < tabControl.TabCount; i++)
{
if (!tabControl.GetTabRect(i).Contains(e.Location))
continue;
tabPageCurrent = tabControl.TabPages[i];
break;
}
if (tabPageCurrent != null)
tabControl.TabPages.Remove(tabPageCurrent);
}
}
2
D Non ci sono abbastanza punti per pubblicare un commento alle soluzioni fornite, ma tutte hanno lo stesso difetto: i controlli all'interno della scheda rimossa non vengono rilasciati.
Saluti
Problemi correlati
- 1. Come mostrare il pulsante sul mouse del mouse div
- 2. Problema con onClick() e tasto centrale sul mouse
- 3. Disattiva l'effetto del mouse sul pulsante
- 4. Rilevamento evento click del mouse centrale jQuery
- 5. Come implementare un doppio clic con il pulsante destro del mouse per Winforms?
- 6. Come disattivare la rotellina del mouse Fare clic sul pulsante?
- 7. Pulsante Chiudi in tabControl
- 8. Pulsante centrale pulsante android
- 9. Legature dei tasti - Pulsante centrale del mouse con testo sublime 2
- 10. Chiudi scheda corrente
- 11. Come faccio a sapere di quale scheda sto facendo clic con il pulsante destro su winforms tabcontrol?
- 12. Arresta il cursore del mouse Excel dal pulsante sfarfallio sul pulsante
- 13. Chiudi il popover di Safari utilizzando il clic sul pulsante all'interno del popover
- 14. Visualizzazione delle coordinate dell'asse del mouse sul controllo grafico
- 15. Scheda Browser Reactjs Chiudi Evento
- 16. Come aggiornare il contenuto della scheda frammenti sul pulsante clic
- 17. jQuery: Rileva il clic del mouse e apre la destinazione in una nuova scheda
- 18. Lo scroll del mouse blocca la scheda cromata
- 19. C# Winforms - cambia l'icona del cursore del mouse
- 20. Come far cadere il cursore del mouse sul mouse?
- 21. Modulo di dialogo WinForms: Chiudi o Disponi?
- 22. Rotellina del mouse che invia il messaggio al controllo errato
- 23. Chiudi popup dalla pressione del pulsante secondario?
- 24. Come si fa clic su un pulsante del mouse in un evento WinForms?
- 25. Pulsante WinForms con immagine e testo
- 26. Come si modifica il colore di sfondo del controllo struttura a schede in Winforms?
- 27. wxNotebook Pulsante Chiudi?
- 28. Controllo cmd.exe da Winforms
- 29. Annulla Chiudi scheda in Vim
- 30. Scambiare il pulsante sinistro e destro del mouse in .NET
Questo è solo un bel codice ... –
Ora stai solo mostrando :) Uomo fantastico, grazie. –