WPF:让TextBox显式显示提示信息(二)TextBoxPlus类演示

同系列文章:

演示程序界面:

源代码及工程下载:

TextBoxPlus.zip

演示程序源代码:
MainWindow.xaml

<Window x:Class="Demo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sp="clr-namespace:Splash.WPF;assembly=TextBoxPlus"
        Title="文本框显式信息提示演示" FontSize="16" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterScreen" Icon="/Demo;component/gardenia.ico">
    <Grid Margin="20">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        
        <Grid Grid.Row="0">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="64" />
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Text="标准控件" />
                <TextBox Name="textBox1" Grid.Row="1" Grid.Column="0" Width="400" />
                <Button Name="button1" Grid.Row="1" Grid.Column="1" Content="清空" Height="32" Click="button1_Click" />
            </Grid>
        </Grid>
        
        <Grid Grid.Row="1" Margin="0,20,0,0">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition />
                </Grid.RowDefinitions>

                <Grid.ColumnDefinitions>
                    <ColumnDefinition />
                    <ColumnDefinition Width="64" />
                </Grid.ColumnDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Text="增强控件" />
                <sp:TextBoxPlus x:Name="textBox2" Grid.Row="1" Grid.Column="0" Width="400" ExplicitToolTip="请输入关键字!" />
                <Button Name="button2" Grid.Row="1" Grid.Column="1" Content="清空" Height="32" Click="button2_Click" />
            </Grid>
        </Grid>
        
        <Grid Grid.Row="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>

            <ComboBox Name="comboBoxToolTipBrush" Grid.Column="0" Height="32" Margin="10" IsReadOnly="True" ItemsSource="{Binding}" DisplayMemberPath="Name" Loaded="comboBoxToolTipBrush_Loaded" SelectionChanged="comboBoxToolTipBrush_SelectionChanged" ToolTip="改变提示内容颜色!" />
            <Button Name="buttonNormalBrush" Grid.Column="1" Content="改变正常文本颜色" Margin="10" Height="32" Click="buttonNormalBrush_Click" Loaded="buttonNormalBrush_Loaded" />            
        </Grid>
    </Grid>
</Window>

MainWindow.xaml.cs

using System.Windows;
using System.Windows.Media;
using Splash.WPF;
using System.Windows.Controls;
using System;

namespace Demo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }       

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            textBox1.Clear();            
        }

        private void button2_Click(object sender, RoutedEventArgs e)
        {
            textBox2.Clear();
        }

        // 查找“DarkGray”画笔
        public Boolean FindDarkGrayBrush(BrushItem item)
        {
            if (item.Name.Equals("DarkGray")) return true; else return false;
        }

        private void comboBoxToolTipBrush_Loaded(object sender, RoutedEventArgs e)
        {
            BrushItem[] Source = CommonBrushes.AllBrushes;
            comboBoxToolTipBrush.ItemsSource = Source;
            comboBoxToolTipBrush.SelectedIndex = Array.FindIndex(Source, FindDarkGrayBrush);
        }

        // 更新提示文本颜色
        private void comboBoxToolTipBrush_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            textBox2.ToolTipForeground = ((BrushItem)((ComboBox)sender).SelectedItem).Value;
        }

        private void buttonNormalBrush_Loaded(object sender, RoutedEventArgs e)
        {
            buttonNormalBrush.Foreground = textBox2.NormalForeground;
        }

        // 更新正常文本颜色
        private void buttonNormalBrush_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.ColorDialog colorDialog = new System.Windows.Forms.ColorDialog();
            if (colorDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                System.Drawing.Color c = colorDialog.Color;
                buttonNormalBrush.Foreground = new System.Windows.Media.SolidColorBrush(Color.FromArgb(c.A, c.R, c.G, c.B));
                textBox2.NormalForeground = buttonNormalBrush.Foreground;
            }
        }
    }
}

CommonBrushes类实现请参考文章:
WPF:获取 Brushes 类中定义的所有常用画笔

Comments are closed.