• Lunes 23 de Diciembre de 2024, 04:41

Autor Tema:  Cerrar pestaña con el boton del medio del mouse (ruedita)  (Leído 2871 veces)

Biasoli

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Cerrar pestaña con el boton del medio del mouse (ruedita)
« en: Sábado 18 de Abril de 2009, 04:14 »
0
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
  1.     Private Sub cerrarPestañaRuedaMouse(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles tabControl.Click
  2.         If e.Button = (Windows.Forms.MouseButtons.Middle) Then
  3.             Dim pestaña As TabPage = tabControl.SelectedTab
  4.             Dim rtb As RichTextBox = pestaña.Controls(0)
  5.             If (Not rtb.Text = "") Then
  6.                 Dim mensaje = MessageBox.Show("¿Desea guardar el archivo " & pestaña.Text & "?", "Guardar", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
  7.                 If (mensaje = DialogResult.No) Then
  8.                     tabControl.TabPages.Remove(pestaña)
  9.                 ElseIf (mensaje = DialogResult.Yes) Then
  10.                     dialog_guardar.FileName = pestaña.Text
  11.                     If (dialog_guardar.ShowDialog() = Windows.Forms.DialogResult.OK) Then
  12.                         rtb.SaveFile(dialog_guardar.FileName, RichTextBoxStreamType.PlainText)
  13.                         estado_informe.Text = "Archivo '" & dialog_guardar.FileName & "' guardado."
  14.                         tabControl.TabPages.Remove(pestaña)
  15.                     End If
  16.                 End If
  17.             Else
  18.                 tabControl.TabPages.Remove(pestaña)
  19.             End If
  20.         End If
  21.     End Sub
  22.  

Lo único que consigo es que se cierre la primera pestaña del TabControl.

Espero que puedan ayudarme.

Gracias.

javierkcjm

  • Miembro activo
  • **
  • Mensajes: 48
  • Nacionalidad: ec
    • Ver Perfil
Re: Cerrar pestaña con el boton del medio del mouse (ruedita)
« Respuesta #1 en: Miércoles 22 de Abril de 2009, 16:37 »
0
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

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: Cerrar pestaña con el boton del medio del mouse (ruedita)
« Respuesta #2 en: Jueves 23 de Abril de 2009, 02:24 »
0
Hola Javier.
Justamente necesito cerrar cualquier pestaña, no solamente la seleccionada.
Si es posible necesitaría esa ayuda.

Muchas gracias.