作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们正在寻找一种方法,让文本框在用户输入时替换某些字符。注意,我们关注的是控件本身,而不是绑定(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/
我是一名优秀的程序员,十分优秀!