且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-02-23 15:11:41

***的方法是使用 TextChanged 事件:

The best way to accomplish this is using the TextChanged event:

    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);
            }
        }
    }

这有几个优点:

  • 你不会每次都遍历整个字符串,只遍历被替换的部分
  • 它在撤消管理器和粘贴文本方面表现良好
  • 您可以轻松地将其封装到可应用于任何文本框的附加属性中