gpt4 book ai didi

wpf - 您可以在键入时替换文本框中的字符吗?

转载 作者:行者123 更新时间:2023-12-04 02:55:50 24 4
gpt4 key购买 nike

我们正在寻找一种方法,让文本框在用户输入时替换某些字符。注意,我们关注的是控件本身,而不是绑定(bind)、 View 模型等。为了这个问题,假设有一个窗口,中间有一个文本框,没有别的。没有数据,没有 View 模型,没有绑定(bind)等。

我已经更新了这个问题,因为下面的所有答案似乎都集中在绑定(bind)、依赖属性、强制等。虽然我很欣赏这些建议,正如我上面所说的,但我们的控件不是绑定(bind)控件,因此它们不适用。

现在虽然我可以解释其中的原因,但这会使这篇文章长五倍,因为它实际上是一个复杂而高级的用例,但这与问题本身无关,这就是我简化我们的场景的原因专注于我们正在尝试解决的特定问题,这是关于文本框控件,或者可能是您键入时替换字符的子类。

希望现在更有意义。

最佳答案

最好的方法是使用 TextChanged事件:

    private void OnTextChanged(object sender, TextChangedEventArgs e)
{
var tb = (TextBox)sender;
using (tb.DeclareChangeBlock())
{
foreach (var c in e.Changes)
{
if (c.AddedLength == 0) continue;
tb.Select(c.Offset, c.AddedLength);
if (tb.SelectedText.Contains(' '))
{
tb.SelectedText = tb.SelectedText.Replace(' ', '_');
}
tb.Select(c.Offset + c.AddedLength, 0);
}
}
}

这有几个优点:
  • 您不必每次都遍历整个字符串,只需替换部分
  • 它与撤消管理器和粘贴文本
  • 配合得很好
  • 您可以轻松地将其封装到附加属性中,该属性可以应用于任何文本框
  • 关于wpf - 您可以在键入时替换文本框中的字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18971198/

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