none
Boton en BindingNavigator heredado RRS feed

  • Pregunta

  • Buenos días:

    Tengo un Form que heredo de otro que incluye in control BindingNavigator.

    En en form heredado puedo añadir un nuevo boton al BindingNavigator con

      Me.bdnGeneral.Items.Add("+")

    Lo que no se hacer es como capturo los eventos de este nuevo boton, por ejemplo cuando el usuario haga Click sobre el, ya que no veo por ningun lado donde añado estos eventos, ya que las propiedades del BindingNavigator heredado esta desactivadas.

    ¿alguna idea?

    Gracias.

     

     

     

     

     

     


    Miguel Angel Martinez correomam@gmail.com
    domingo, 4 de abril de 2010 10:04

Respuestas

  • Tienes que instalar el controlador para el evento Click del control ToolStripItem que añades dinámicamente.

    Por ejemplo, imagina que tienes el siguiente procedimiento, con igual firma que el evento Click de cualquier control ToolStripButton:


        Private Sub BindingNavigatorItemOnClick(ByVal sender As Object, ByVal e As EventArgs)

            ' Referenciamos el objeto que ha desencadenado el evento
            '
            Dim tsb As ToolStripButton = DirectCast(sender, ToolStripButton)

            MessageBox.Show("Se ha hecho clic en el control " & tsb.Name)


        End Sub

    Cuando añadas el control, instalarías el controlador de la siguiente manera:

         Dim tsb As ToolStripItem = Me.bdnGeneral.Items.Add("+")

         tsb.Name = "toolStripMas"

         AddHandler tsb.Click, AddressOf BindingNavigatorItemOnClick

    No es necesario que asignes la propiedad Name. Lo he hecho sólo a efectos del ejemplo.

     


    Enrique Martínez [MS MVP - VB]
    domingo, 4 de abril de 2010 13:07
    Moderador
  • Si tienes añadida la imagen a los recursos de tu aplicación, es fácil asignarle la imagen al control ToolStripButton:

            tsb.DisplayStyle = ToolStripItemDisplayStyle.Image
            tsb.Image = My.Resources.Imagen1

    Se comprende que Imagen1 es el nombre del recurso.

     


    Enrique Martínez [MS MVP - VB]
    domingo, 4 de abril de 2010 18:50
    Moderador

Todas las respuestas

  • Tienes que instalar el controlador para el evento Click del control ToolStripItem que añades dinámicamente.

    Por ejemplo, imagina que tienes el siguiente procedimiento, con igual firma que el evento Click de cualquier control ToolStripButton:


        Private Sub BindingNavigatorItemOnClick(ByVal sender As Object, ByVal e As EventArgs)

            ' Referenciamos el objeto que ha desencadenado el evento
            '
            Dim tsb As ToolStripButton = DirectCast(sender, ToolStripButton)

            MessageBox.Show("Se ha hecho clic en el control " & tsb.Name)


        End Sub

    Cuando añadas el control, instalarías el controlador de la siguiente manera:

         Dim tsb As ToolStripItem = Me.bdnGeneral.Items.Add("+")

         tsb.Name = "toolStripMas"

         AddHandler tsb.Click, AddressOf BindingNavigatorItemOnClick

    No es necesario que asignes la propiedad Name. Lo he hecho sólo a efectos del ejemplo.

     


    Enrique Martínez [MS MVP - VB]
    domingo, 4 de abril de 2010 13:07
    Moderador
  • Gracias Enrique:

    Perfecto como siempre.

    Estoy intentando añadir una imagen a este boton, pero tengo problemas con la cadena de asignacion.

    Entiendo que los mas facil seria tomarlo de mis Resources, pero no se como.

    He visto que el designer del form del cual heredo, las imagenes las asinfa asi:

     'Resources.ApplyResources(Me.butNuevo, "butNuevo")
     'Me.butNuevo.BackgroundImage = Nothing
     'Me.butNuevo.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image

    Pero yo no consigo hacer funcinar este codigo en mi formulario.

    La otra alternativa es indicarle la ruta del fichero, pero todas las opciones que encuentro me dan la ruta completa hasta ....bin/debug.

     

    Dim tsb As ToolStripItem = Me.bdnGeneral.Items.Add(System.Drawing.Bitmap.FromFile(Application.StartupPath & "\Iconos\insertarNET.ico"))

     Dim tsb As ToolStripItem = Me.bdnGeneral.Items.Add(System.Drawing.Bitmap.FromFile(My.Application.Info.DirectoryPath & "\Iconos\insertarNET.ico"))

    Supongo que podria quitar los caracteres del final de la cadena, pero me parece una solucion un poco chapucera, y no estoy seguro de que la cadena no pueda variar en sus ultimos caracteres, sobre todo cuando la aplicacion este corriendo en otros ordenadores.

     

    Otra alternativa que contemplo es

     
                    Ruta = "C:\LogoJR.bmp"
                    bmp = My.Resources.InsertarNET
         
                    bmp.Save(Ruta, Imaging.ImageFormat.Bmp)
             'Uso el bmp........           

                  'Eliminamos el archivo temporal
                    IO.File.Delete(Ruta)

    Pero me parece muy rebuscada, sobre todo teniendo los Resources.

    Me interesaria a ser posible manejarlos desde mis Resources, y si no es posible de la forma mas adecuada para estar seguro que el fichero siempre estara en la ruta indicada.

     

     

    Gracias.

     

     

     


    Miguel Angel Martinez correomam@gmail.com
    domingo, 4 de abril de 2010 18:34
  • Si tienes añadida la imagen a los recursos de tu aplicación, es fácil asignarle la imagen al control ToolStripButton:

            tsb.DisplayStyle = ToolStripItemDisplayStyle.Image
            tsb.Image = My.Resources.Imagen1

    Se comprende que Imagen1 es el nombre del recurso.

     


    Enrique Martínez [MS MVP - VB]
    domingo, 4 de abril de 2010 18:50
    Moderador