WPF文本框(TextBox)及限制只能输入数字

输入监听

在 WPF 中,你可以使用 TextChanged 事件来监听 TextBox 内容的变化。你可以在 XAML 中指定事件处理程序,也可以在代码中动态添加事件处理程序。下面是一个简单的示例:

1
<TextBox TextChanged="TextBox_TextChanged" />

然后在对应的代码文件中:

1
2
3
4
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
// 处理文本框内容变化的逻辑
}

这样,当用户在文本框中输入文本时,TextBox_TextChanged 方法将被调用。

监听Enter和Tab

1
2
3
4
5
6
7
8
9
10
11
12
13
14
InputTb.PreviewKeyDown += InputTb_PreviewKeyDown;
private void InputTb_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
MessageBox.Show("Enter 被按下了");
e.Handled = true; // 如果需要阻止默认行为
}
else if (e.Key == Key.Tab)
{
MessageBox.Show("Tab 被按下了");
e.Handled = true; // 如果需要阻止默认行为
}
}

只能输入数字

前台UI设置

1
2
3
4
5
6
7
<TextBox 
Width="100"
Height="30"
PreviewTextInput="TextBox_PreviewTextInput"
PreviewKeyDown="TextBox_PreviewKeyDown"
InputMethod.IsInputMethodEnabled="False"
/>

其中
InputMethod.IsInputMethodEnabled="False"禁用输入法
后台代码限定只能输入数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private void TextBox_PreviewTextInput
(
object sender,
TextCompositionEventArgs e
)
{
if (!short.TryParse(
e.Text,
out short _
))
e.Handled = true;
}

private void TextBox_PreviewKeyDown
(
object sender,
KeyEventArgs e
)
{
if (e.Key == Key.Space)
e.Handled = true;
}

样式

文字居中

1
2
3
4
<TextBox
Padding="10,0,10,0"
VerticalContentAlignment="Center"
MaxLines="1" />

行高设置

1
2
3
4
<TextBox
Padding="10"
Text="{Binding SelectAnsStr}"
TextBlock.LineHeight="20" />