多个TextBoxes WPF的一个事件

时间:2017-06-30 09:25:28

标签: c# wpf

我有多个(> 10)TextBox用于存储货币值。当用户输入时,我想将输入格式化为货币。

我可以为每个TextBox创建一个方法,但这意味着创建> 10种方法。我宁愿创建一个多个TextBox可能使用的方法。例如:

private void OnCurrencyTextBox_PreviewTextInput(object sender, 
TextCompositionEventArgs e)
{
    CurrencyTextBox.Text = FormattedCurrency(CurrencyTextBox.Text);
}

但是,这仅适用于名为CurrencyTextBox的TextBox。当然,如果密钥是数字等,则需要进行其他检查,但出于这个问题的目的,我将重点关注如何将一种方法应用于多个TextBox。

3 个答案:

答案 0 :(得分:4)

将发件人参数投射到TextBox

private void OnCurrencyTextBox_PreviewTextInput(object sender,
TextCompositionEventArgs e)
{
    TextBox textBox = sender as TextBox;
    textBox.Text = FormattedCurrency(textBox.Text);
}

然后,您可以对所有TextBox元素使用相同的事件处理程序:

<TextBox x:Name="t1" PreviewTextInput="OnCurrencyTextBox_PreviewTextInput" />
<TextBox x:Name="t2" PreviewTextInput="OnCurrencyTextBox_PreviewTextInput" />
...

答案 1 :(得分:1)

使用StringFormat = C。

定义文本框
<TextBox Text="{Binding Path=TextProperty, StringFormat=C}"/>

答案 2 :(得分:0)

sender是控制哪个事件被触发:

private void OnCurrencyTextBox_PreviewTextInput(object sender, 
TextCompositionEventArgs e)
{
    ((TextBox)sender).Text = FormattedCurrency(((TextBox)sender).Text);
}