none
Establecer un color al borde de un textbox al recibir el foco RRS feed

  • Pregunta

  • Hola:

     Quisiera cambiarle el color del borde de mis textbox al momento de recibir el foco pero, tengo dos dudas:

     1 .- ¿Con que evento es que debo de trabajar? en C# y Vb.Net son el Enter pero aqui desconosco cual sea.

    2 .- ¿Como seria el código con el cual pueda empezar?

     Agradeceria mucho culaquier orientacion que pudieran darme!


    Saludos desde Monterrey, Nuevo León, México!!!


    martes, 28 de mayo de 2013 16:29

Respuestas

  • Esta forma es mejor que la que te puesto anteriormente y ademas se lo puedes poner a todos los texbox que quieras.
    <Window.Resources>
    <Style x:Key="CambioBorde" TargetType="{x:Type TextBox}" >
            <Style.Triggers>
                <Trigger Property="TextBox.IsFocused"    Value="True">
                    <Setter Property="BorderBrush" Value="Red"/>
                </Trigger>
                <Trigger Property="TextBox.IsFocused"    Value="False">
                    <Setter Property="BorderBrush" Value="Blue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    Luego en los texbox que te interese añade la propiedad Style="{DynamicResource CambioBorde}"

    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.

    martes, 28 de mayo de 2013 19:26
  • Cuando has creado el prollecto se a generado por defecto este fichero "MainWindow.xaml" si no lo has cambiado.

    Es donde esta el codigo xaml.Busca la etiquetas

    <Window.Resources>

    si la tienes copia el codigo que te he puesto dentro de dicha etiqueta, si no la tienes copia todo lo que te he puesto debajo entre las etiquetas <windows.........> y </widows>

    luego el texbox estara declarado mas o menos asi.

    <TextBox Text="{Binding Path=Direccion}" Height="20" HorizontalAlignment="Left" Margin="70,60,0,0" Name="textDireccion" VerticalAlignment="Top" Width="685" />

    Pues le añades Style="{DynamicResource CambioBorde}" antes de />


    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.


    martes, 28 de mayo de 2013 19:56

Todas las respuestas

  • Hola.

    Para WPF lo puedes hacer así.

    <Window.Resources>
    <Storyboard x:Key="ConFoco">
    			<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="textDireccion">
    				<EasingColorKeyFrame KeyTime="0" Value="Red"/>
    			</ColorAnimationUsingKeyFrames>
    		</Storyboard>
    		<Storyboard x:Key="SinFoco">
    			<ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" Storyboard.TargetName="textDireccion">
    				<EasingColorKeyFrame KeyTime="0" Value="Blue"/>
    			</ColorAnimationUsingKeyFrames>
    		</Storyboard>
    </Window.Resources>
    
    <Window.Triggers>
    <EventTrigger RoutedEvent="FocusManager.GotFocus" SourceName="textDireccion">
    			<BeginStoryboard x:Name="ConFoco_BeginStoryboard" Storyboard="{StaticResource ConFoco}"/>
    		</EventTrigger>
    		<EventTrigger RoutedEvent="FocusManager.LostFocus" SourceName="textDireccion">
    			<BeginStoryboard x:Name="SinFoco_BeginStoryboard" Storyboard="{StaticResource SinFoco}"/>
    		</EventTrigger>	
    	</Window.Triggers>
    Cambia donde pone texDireccion por el nombre de tu texbox.


    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.


    • Editado Rodripelto martes, 28 de mayo de 2013 18:32
    martes, 28 de mayo de 2013 18:30
  • Esta forma es mejor que la que te puesto anteriormente y ademas se lo puedes poner a todos los texbox que quieras.
    <Window.Resources>
    <Style x:Key="CambioBorde" TargetType="{x:Type TextBox}" >
            <Style.Triggers>
                <Trigger Property="TextBox.IsFocused"    Value="True">
                    <Setter Property="BorderBrush" Value="Red"/>
                </Trigger>
                <Trigger Property="TextBox.IsFocused"    Value="False">
                    <Setter Property="BorderBrush" Value="Blue"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    Luego en los texbox que te interese añade la propiedad Style="{DynamicResource CambioBorde}"

    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.

    martes, 28 de mayo de 2013 19:26
  • Hola Rodripelto:

     En realidad estos son mis primeros pasos con WCF te importaria indicarme donde poner ese codigo? estoy ya estudiando WCF con la informacion de la Msdn asi que este tipo de preguntas de Parbulos no seran muy frecuentes...

    Gracias por tu ayuda!


    Saludos desde Monterrey, Nuevo León, México!!!

    martes, 28 de mayo de 2013 19:36
  • Cuando has creado el prollecto se a generado por defecto este fichero "MainWindow.xaml" si no lo has cambiado.

    Es donde esta el codigo xaml.Busca la etiquetas

    <Window.Resources>

    si la tienes copia el codigo que te he puesto dentro de dicha etiqueta, si no la tienes copia todo lo que te he puesto debajo entre las etiquetas <windows.........> y </widows>

    luego el texbox estara declarado mas o menos asi.

    <TextBox Text="{Binding Path=Direccion}" Height="20" HorizontalAlignment="Left" Margin="70,60,0,0" Name="textDireccion" VerticalAlignment="Top" Width="685" />

    Pues le añades Style="{DynamicResource CambioBorde}" antes de />


    No hay problema bajo el Sol que no tenga solución. Nunca una noche ha vencido a un amanecer.


    martes, 28 de mayo de 2013 19:56