您的位置:首页 > 其它

WPF自定义WaterTextBox

2016-03-30 09:53 274 查看
今天在看javaScript中发现有onblur和onfocus事件,很轻松了实现了有水印的TextBox,寻思着wpf中是不是也有类似的方法,查找官网api,发现了有LostFocus和GotFocus两个方法,不过,要实现类似效果,你的重写他。代码很简单,直接上:

public class WaterTextBox : TextBox

    {

        public WaterTextBox()

        { 

            this.Text = "输入内容";

            this.Foreground = Brushes.Gray;

        }

        protected override void OnLostFocus(System.Windows.RoutedEventArgs e)

        {

            base.OnLostFocus(e);

            if (string.IsNullOrEmpty(this.Text))

            {

                this.Text = "输入内容";

                this.Foreground = Brushes.Gray;

            }

        }

        protected override void OnGotFocus(System.Windows.RoutedEventArgs e)

        {

            base.OnGotFocus(e);

            if (this.Text == "输入内容" && this.Foreground == Brushes.Gray)

            {

                this.Clear();

                this.Foreground = Brushes.Black;

            }

        }

    }

定义一个WaterTextBox继承TextBox,重写OnLostFocus和OnGotFocus,前台代码更简单,如下:

<Window x:Class="wpfLostFocus.MainWindow"

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

        xmlns:my="clr-namespace:wpfLostFocus"

        Title="MainWindow" Height="350" Width="525">

    <Grid>

        <my:WaterTextBox Width="100" Height="25"></my:WaterTextBox>

        <TextBox Margin="208,198,209,92" Text="nihao"/>

    </Grid>

</Window>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  wpf water textbox