none
Manejador de eventos pulsar y ocultar RRS feed

  • Pregunta

  • Hola

    Como hago para ocultar un panel cuando un boton este pulsado. El codigo es

     Private Sub appointmentMore_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)

            Dim panelappointmore As Object
            Dim btnpulsado As Object
            If btnpulsado Then
            ElseIf panelappointmore = False Then
                panelappointmore = True
            End If
               End Sub

    me dice que las variables  btnpulsado y panelappointmores  se utiliza antes de que se le haya asignado un valor. Podria darse una excepcion de referencua nula en tiempo de ejecucion.

    Si pongo

    Private Sub appointmentMore_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)

            Dim panelappointmore As Object
            Dim btnpulsado As Button = CType(e.Source, Button)
             If btnpulsado Then
            ElseIf panelappointmore = False Then
                panelappointmore = True
            End If
               End Sub

    m da fallo un valor de system.windows.controls no se puede convertir en Boolean

    Gracias

    miércoles, 20 de octubre de 2010 17:14

Respuestas

  • Hola.

    propongo otra opcion mediante bindings aunque solo sea para ver la forma de hacerlo mediante binding:

     

     <Window.Resources>
      <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter1" />
     </Window.Resources>
     <Grid>
      <Grid Height="111" Name="grid1" VerticalAlignment="Top" Width="135" Background="Red" 
        Visibility="{Binding ElementName=button1, Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter1}}" />
      <ToggleButton Content="Button" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" ></ToggleButton>
     </Grid>
    

     

    He puesto un grid, pero puede ser cualquier otro control.

    OJO, tu haces uso de un boton, no se si es lo que quieres usar pero para mantener estados pulsado/liberado, hace falta un ToogleButton.

    Esta opcion tiene un pequeño problemilla, que salta a la vista. 

    BooleanToVisibilityConverter es una clase del sistema, por eso se puede usar sin crearse una clase converter, no obstante, el problema es que no se puede modificar el comportamiento, o sea, que cuando pulsas es cuando se ve(pero igual es el comportamiendo deseado). Para modificar el comportamiento se puede crear una clase converter propia.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta CorsarioVasco miércoles, 20 de octubre de 2010 21:01
    • Marcado como respuesta brujita tapita jueves, 21 de octubre de 2010 14:57
    miércoles, 20 de octubre de 2010 19:35
  • ¡Hola!
    Cuanto código te sobra ;-)
    Private Sub appointmentMore_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
    
    'El botón ha sido pulsado por lo que ocultamos el panel
      panelappointmore.Visibility=System.Windows.Visibility.Collapse 
    
    End Sub
    
    
    

    Saludos,

     

    • Propuesto como respuesta David_González jueves, 21 de octubre de 2010 13:15
    • Marcado como respuesta brujita tapita jueves, 21 de octubre de 2010 14:07
    miércoles, 20 de octubre de 2010 18:34

Todas las respuestas

  • ¡Hola!
    Cuanto código te sobra ;-)
    Private Sub appointmentMore_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
    
    'El botón ha sido pulsado por lo que ocultamos el panel
      panelappointmore.Visibility=System.Windows.Visibility.Collapse 
    
    End Sub
    
    
    

    Saludos,

     

    • Propuesto como respuesta David_González jueves, 21 de octubre de 2010 13:15
    • Marcado como respuesta brujita tapita jueves, 21 de octubre de 2010 14:07
    miércoles, 20 de octubre de 2010 18:34
  • Hola.

    propongo otra opcion mediante bindings aunque solo sea para ver la forma de hacerlo mediante binding:

     

     <Window.Resources>
      <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter1" />
     </Window.Resources>
     <Grid>
      <Grid Height="111" Name="grid1" VerticalAlignment="Top" Width="135" Background="Red" 
        Visibility="{Binding ElementName=button1, Path=IsChecked, Converter={StaticResource BooleanToVisibilityConverter1}}" />
      <ToggleButton Content="Button" HorizontalAlignment="Left" Name="button1" VerticalAlignment="Top" ></ToggleButton>
     </Grid>
    

     

    He puesto un grid, pero puede ser cualquier otro control.

    OJO, tu haces uso de un boton, no se si es lo que quieres usar pero para mantener estados pulsado/liberado, hace falta un ToogleButton.

    Esta opcion tiene un pequeño problemilla, que salta a la vista. 

    BooleanToVisibilityConverter es una clase del sistema, por eso se puede usar sin crearse una clase converter, no obstante, el problema es que no se puede modificar el comportamiento, o sea, que cuando pulsas es cuando se ve(pero igual es el comportamiendo deseado). Para modificar el comportamiento se puede crear una clase converter propia.

     


    Saludos
    David González
    MCP, MCTS
    Visita mi Blog en: http://www.dgzornoza.com/
    • Propuesto como respuesta CorsarioVasco miércoles, 20 de octubre de 2010 21:01
    • Marcado como respuesta brujita tapita jueves, 21 de octubre de 2010 14:57
    miércoles, 20 de octubre de 2010 19:35