gpt4 book ai didi

.net - 在将输入字符添加到文本之前将其交换到 WPF 文本框

转载 作者:行者123 更新时间:2023-12-04 06:48:54 27 4
gpt4 key购买 nike

我有一个用于处理数字的 TextBox。因此,我只接受 [0-9.,]。然而, ”。”是唯一有效的小数分隔符。因此,我只希望在我的文本中使用这个,但我也想接受“,”,并用“。”交换它。这样显示的字符是有效的。

那么 - 我如何交换输入字符?我假设我可以获取它并在某些输入事件中交换它?还是在插入文本框后必须更换它?

我尝试在 OnPreviewKeyDown 和 OnPreviewTextInput 事件中交换它,但保存输入字符的属性是只读的。我想做这样的事情:

protected override void OnPreviewKeyDown(System.Windows.Input.KeyEventArgs e)
{
if (e.Key == Key.OemComma)
{
e.Key = Key.OemPeriod;
}
base.OnPreviewKeyDown(e);
}

最佳答案

您可以使用 TextChanged 事件并每次替换 Text 属性。

private void textBox_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox box = (TextBox)sender;
box.Text = box.Text.Replace(",", ".");
}

如果您使用 Binding,您可以制作一个转换器,在它转换回来时替换文本。
<TextBox Name="textBox" Text="{Binding Path=number, Converter=DecimalConverter}"  />


public class DecimalConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
return value;
}

public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
string strValue = (string)value;
return strValue.Replace(",",".");
}
}

关于.net - 在将输入字符添加到文本之前将其交换到 WPF 文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3404935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com