¿Hay alguna manera fácil (5 líneas de código) para hacer esto?Cerrar pestaña en el control de pestañas de winforms con el botón central del mouse
8
A
Respuesta
20
El código más corto para eliminar la pestaña en la que se hizo clic en el botón central del mouse es mediante LINQ.
Asegúrese de que el evento se cableathis.tabControl1.MouseClick += tabControl1_MouseClick;
Y para el manejador en 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());
}
}
Y si usted se está esforzando para la menor cantidad de líneas, aquí está en una línea
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
Usted puede hacer esto:
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]);
}
}
Básicamente son sólo la captura de un clic del ratón sobre el control de ficha y sólo eliminar una página si se hace clic en el botón central.
6
solución sin LINQ no es tan compacto y hermoso, sino también real:
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 no tiene suficientes puntos para publicar un comentario en las soluciones proporcionadas, pero todos adolecen de la misma falla: los controles dentro de la pestaña eliminada no se liberan.
Saludos
Cuestiones relacionadas
- 1. Problema con onClick() y botón central en el mouse
- 2. jQuery: detectar el clic del mouse y abrir el objetivo en la nueva pestaña
- 3. ¿Cómo puedo eliminar el botón Cerrar de las pestañas del editor en Eclipse?
- 4. Botón Cerrar de ExtJS en cada pestaña en un Tabpanel
- 5. Cómo simular el clic del mouse con el control WebBrowser
- 6. ¿Cómo puedo hacer que WPF ScrollViewer haga clic con el botón central del mouse?
- 7. Botón de cerrar solo para algunas pestañas en Qt
- 8. ¿Alerta de Jquery cuando se hace clic en el botón central del mouse?
- 9. Reducir el relleno alrededor del texto en el botón WinForms
- 10. ¿Cómo puedo saber a qué pestaña se desplaza de/a en un control de pestaña WinForms?
- 11. ¿Cómo cambio el color de fondo del control de pestañas en Winforms?
- 12. Anula el comportamiento de la pestaña en WinForms
- 13. Cómo crear pestañas trapezoidales en el control de pestañas WPF
- 14. JTable con un botón "Cerrar" en el encabezado de columna
- 15. ¿Cómo obtener el control debajo del cursor del mouse?
- 16. Flex: Cómo agregar un botón de cerrar pestaña para el componente TabNavigator
- 17. C# Winforms - cambie el icono del cursor del mouse
- 18. WPF TabControl ¿Cómo cambiar la pestaña con el mouse hacia arriba en lugar de hacia abajo?
- 19. Qt - Hoja de estilo para el botón personalizado del mouse sobre el botón y el botón
- 20. ¿Es posible hacer que el control de pestañas de WinForms pueda hacer el reordenamiento de pestañas como IE o Firefox?
- 21. menú contextual con el botón derecho del mouse para datagridview
- 22. cómo cerrar las pestañas ie8
- 23. ¿Cómo cambio el cursor del mouse cuando el botón izquierdo del mouse está presionado?
- 24. Cambio de color del botón al pasar el mouse
- 25. Desplegable del botón Bootstrap en el panel de pestañas que causa el desbordamiento
- 26. Cómo solucionar IntelliJ Idea no cerrar pestañas con Ctrl + F4?
- 27. C control de pestañas win32
- 28. Mostrar el menú predeterminado del botón derecho del mouse - Delphi
- 29. reemplazar el control existente con clase personalizada .NET Winforms
- 30. Manteniendo presionado el botón izquierdo del mouse en AutoHotkey
Eso es solo un hermoso código ... –
Ahora solo estás presumiendo :) Hombre brillante, gracias. –