Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当用户在文本框中输入信息时,什么方法设置文本框的文本?_C#_Winforms_User Controls_Textbox - Fatal编程技术网

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

C# 当用户在文本框中输入信息时,什么方法设置文本框的文本?,c#,winforms,user-controls,textbox,C#,Winforms,User Controls,Textbox,我正在学习如何通过继承C#中的父类来实现自定义控件 我需要重写用户输入文本时触发的例程。显然,我可以使用TextChanged添加一个事件来触发,但对我来说,这似乎是一种肮脏的清理方法 我已经研究过重写文本{get;set;}属性,但这不起作用 帮助?您可以使用该事件。请注意,用户仍然可以在不引发KeyDown事件的情况下粘贴内容。要捕获所有输入,您需要像您所想的那样处理TextChanged;它没有什么脏的。 < P>一种考虑的方法是创建一个扩展了标准文本框< /> >的自定义文本框。您可以覆

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

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

我已经研究过重写
文本{get;set;}
属性,但这不起作用


帮助?

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

< P>一种考虑的方法是创建一个扩展了标准<代码>文本框< /> >的自定义文本框。您可以覆盖许多属性和方法,包括
OnKeyPress
,以处理用户输入

简单的例子:

class MyTextBox : TextBox
{
    protected override void OnKeyPress(KeyPressEventArgs e) {
        if (e.KeyChar == '!') {
            e.Handled = true;
        } 
        base.OnKeyPress(e);
    }
}
当用户输入感叹号时,本例中的
文本框将忽略输入。您可以像使用标准Winform
TextBox
控件一样使用此文本框

您可以使用VisualStudio的Intellisense查看可用的
override
s。只要在类中键入“override”开始创建一个新成员,所有可重写的成员就会出现

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


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

重写text属性有什么不好的地方,您想让它做什么?似乎text属性只在尝试通过代码访问textbox中的内容时使用,(并且在运行时不会由最终用户触发)啊,我对自定义控件不熟悉。我通常的做法是在使用
textbox.TextChanged+=
输入文本后更改文本。这是“脏”的,因为在瞬间,文本框包含不正确的数据。这是我从VB6高中时代开始的正常做法(如果keyscii不需要,请将keyscii设置为0)。e.Handled对我来说是新的。但是,当用户复制和粘贴以及
OnTextChanged(EventArgs e)时,这不起作用
事件参数没有处理的
.Handled
property@James我确实说过我的是一个简单的例子。我在codeproject.com上找到了一篇文章,它使用了相同的技术来扩展文本框来做你需要做的事情,包括处理C&P。