我想等待winform上的用户输入。不使用文本框或其他控件。只是它自己处理输入的形式。 我尝试将KeyPress和TextChanged事件添加到表单中,两者都没有成功。我做错了什么?
谢谢:)
答案 0 :(得分:1)
根据你的评论,听起来你问为什么双击一个控件来创建一个事件处理程序,但输入完全相同的方法签名却不行。原因是设计人员生成了.Designer.cs
文件中的代码。如果你查看那里,你会发现(最终 - 为表单生成了很多代码......)一行将按钮引发的实际事件链接到它生成的处理程序方法;像这样的东西:
button1.Click += button1_Clicked;
当您在Form1.cs文件中直接手动键入button1_Clicked(object sender, EventArgs e)
的签名时,这是不会发生的魔力。
但我也可能完全误读你的意见/问题。
答案 1 :(得分:0)
如果您想在Form
上执行键盘输入:
Form.KeyPress
- 事件KeyPreview
= true(例如通过设计器)Form
已集中注意力Keyboard input on the Form level
关于TextChanged
事件:
来自MSDN:
如果通过a更改Text属性,则会引发此事件 程序化修改或用户交互。
因此,当TextChanged
属性被更改时,必须至少在表单初始化时引发.Text
事件。当然,每当您将此属性更改为:_myForm.Text = "my new form"
在你的情况下TextChanged
事件没有引发,因为(我假设)在调用InitializeComponent()
方法后添加了事件处理程序。其中(C#)this.Text = "MyForm"
被称为