CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Cerrar pestaña con el boton del medio del mouse (ruedita)
(1/1)
Biasoli:
Tengo un TabControl llamado "tabControl" y una serie de pestañas creadas casi todas en tiempo de ejecución, y quiero que al hacerles click con la ruedita del mouse se cierren. He probado varias cosas pero hasta ahora nada funciona.
Este es el código:
--- Código: vb.net --- Private Sub cerrarPestañaRuedaMouse(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tabControl.Click If e.Button = (Windows.Forms.MouseButtons.Middle) Then Dim pestaña As TabPage = tabControl.SelectedTab Dim rtb As RichTextBox = pestaña.Controls(0) If (Not rtb.Text = "") Then Dim mensaje = MessageBox.Show("¿Desea guardar el archivo " & pestaña.Text & "?", "Guardar", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) If (mensaje = DialogResult.No) Then tabControl.TabPages.Remove(pestaña) ElseIf (mensaje = DialogResult.Yes) Then dialog_guardar.FileName = pestaña.Text If (dialog_guardar.ShowDialog() = Windows.Forms.DialogResult.OK) Then rtb.SaveFile(dialog_guardar.FileName, RichTextBoxStreamType.PlainText) estado_informe.Text = "Archivo '" & dialog_guardar.FileName & "' guardado." tabControl.TabPages.Remove(pestaña) End If End If Else tabControl.TabPages.Remove(pestaña) End If End If End Sub
Lo único que consigo es que se cierre la primera pestaña del TabControl.
Espero que puedan ayudarme.
Gracias.
javierkcjm:
Hola amigo,
lo que tienes que hacer es programar en el evento MouseUp del tabcontrol ahi preguntar por el tab seleccionador y liberarlo
mira este ejemplo
al igual que tu creo pestañas en tiempo de ejecucion
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TabControl1.TabPages.Add("Hola")
TabControl1.TabPages.Add("como")
End Sub
y programo el evento del tabcontrol mouseup
Private Sub TabControl1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabControl1.MouseUp
If e.Button = Windows.Forms.MouseButtons.Middle Then
TabControl1.TabPages(TabControl1.SelectedIndex).Dispose()
End If
End Sub
y listo, cada vez que des click con la ruedita sobre una pestaña se cierra,ah para que esto funcione el tab q vas a eliminar debe ser el tab actual mostrado es decir que si tienes el tab1 que muestra y das click sobre el tab2 se cierra el tab1, igualmente seria bueno que preguntaras antes de eliminar un tab, ahi es cuestion tuya, espero haberte ayudado
saludos cordiales
JC
Biasoli:
Hola Javier.
Justamente necesito cerrar cualquier pestaña, no solamente la seleccionada.
Si es posible necesitaría esa ayuda.
Muchas gracias.
Navegación
Ir a la versión completa