当用户在文本框中输入信息时,什么方法设置文本框的文本

本文关键字:文本 方法 什么 置文本 信息 用户 输入 | 更新日期: 2023-09-27 18:14:58

我正在学习如何通过继承c#中的父类来实现自定义控件。

我需要重写当用户输入文本时触发的例程。显然,我可以使用TextChanged添加一个事件来触发,但这对我来说似乎是一种肮脏的清理方法。

我已经研究了覆盖Text {get;set;}属性,但这不起作用。

帮助吗?

当用户在文本框中输入信息时,什么方法设置文本框的文本

可以使用KeyDown事件。注意,用户仍然可以在不引发KeyDown事件的情况下粘贴内容。为了捕获所有输入,您需要像您想象的那样处理TextChanged;

可以考虑的一种方法是创建一个扩展标准TextBox的自定义TextBox。您可以override许多属性和方法,包括OnKeyPress来处理用户输入。

简单的例子:

class MyTextBox : TextBox
{
    protected override void OnKeyPress(KeyPressEventArgs e) {
        if (e.KeyChar == '!') {
            e.Handled = true;
        } 
        base.OnKeyPress(e);
    }
}

本例中的TextBox将在用户输入感叹号时忽略输入。你可以像使用标准的Winform TextBox控件一样使用这个文本框。

你可以使用Visual Studio的智能感知来查看哪些override可用。只需在类中键入'override'创建一个新成员,所有可重写的成员就会出现。

编辑有关示例,请参阅codeproject.com上的这篇文章。本文中提供的控件扩展了TextBox以专门过滤掉非数字字符,但您可以轻松地修改它以过滤掉您需要过滤的字符。

使用自定义控件的另一个理由是:您可以跨项目重用它,而不必每次都重新编码。