我有多个(> 10)TextBox用于存储货币值。当用户输入时,我想将输入格式化为货币。
我可以为每个TextBox创建一个方法,但这意味着创建> 10种方法。我宁愿创建一个多个TextBox可能使用的方法。例如:
private void OnCurrencyTextBox_PreviewTextInput(object sender,
TextCompositionEventArgs e)
{
CurrencyTextBox.Text = FormattedCurrency(CurrencyTextBox.Text);
}
但是,这仅适用于名为CurrencyTextBox
的TextBox。当然,如果密钥是数字等,则需要进行其他检查,但出于这个问题的目的,我将重点关注如何将一种方法应用于多个TextBox。
答案 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);
}