32.失焦提示 C#例子 WPF例子
一个提示输入,但是会在输入和聚焦时消失,其他时候显示
原理就是一旦聚焦就不显示提示
失焦时如果有内容不操作、没有内容就显示提示
C#代码:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace practice
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void got_Focus(object sender, RoutedEventArgs e)
{
TextBlock1.Visibility = Visibility.Collapsed;
}
private void lost_Focus(object sender, RoutedEventArgs e)
{
if (string.IsNullOrWhiteSpace(TextBox1.Text))
{
TextBlock1.Visibility = Visibility.Visible;
}
}
}
}
XAML代码:
<Window x:Class="practice.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:practice"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TextBox Name="TextBox1" Width="300" VerticalAlignment="Center" HorizontalAlignment="Center" GotFocus="got_Focus" LostFocus="lost_Focus"/>
<TextBlock Name="TextBlock1" Text="请在这里输入" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="Gray" IsHitTestVisible="False"/>
<TextBox HorizontalAlignment="Left" Margin="250,170,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
</Grid>
</Window>
Label用于说明,比如放在按钮前
Textblock用于显示
常见的属性
VerticalAlignment="Center"
:垂直对齐方式设置为居中。
HorizontalAlignment="Center"
:水平对齐方式设置为居中。
foreground="Gray"
: 这个属性设置了元素的前景色
IsHitTestVisible="False"
: 这个属性指定元素是否参与命中测试。命中测试是UI框架用来确定用户输入(如鼠标点击或触摸)是否指向特定元素的过程。当IsHitTestVisible
设置为False
时,元素将不会响应鼠标事件、触摸事件等用户交互。这通常用于使元素在视觉上可见但不可交互,例如,用于显示信息但不希望用户能够点击或与之交互的文本或图形。
PlaceholderTextBlock.Visibility = Visibility.Collapsed;
Visible
表示控件是可见的,它会占据布局空间。
Collapsed
表示控件是不可见的,并且它不会占据任何布局空间。这与 Hidden
不同(尽管在某些UI框架中可能存在 Hidden
状态),Hidden
通常意味着控件不可见但仍然占据其布局空间。