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

[0] Índice de Mensajes

Ir a la versión completa