4

我在设置为多行的表单上有一个简单的搜索字段(据我所知,这是更改文本框高度的唯一方法),并且标志 AcceptsReturn 设置为 false。

但是,当我在该控件中按 Enter 键时,它并没有按应有的方式激活默认按钮,而是输入了一个返回字符。

现在,我还尝试使用 KeyPress 事件来检查是否已按下 Enter 键来激活搜索按钮单击功能,希望它会覆盖此返回行为 - 但它没有。现在它只是运行搜索并插入一个返回字符。

我正在运行 Visual Studio 2010(虽然这个问题在我转换之前似乎也存在于 2008 年)和 C# .NET 2.0。有什么解决办法吗?

4

2 回答 2

6

我看到已经发布了一个答案,其中提到了 AcceptButton 属性,但我想我会更清楚地说明为什么这是必要的:quoth MSDN,在 AcceptsReturn 上,“如果表单没有默认按钮,则 ENTER 键将始终无论此属性的值如何,都在控件中创建新的一行文本。” (我只是在一个虚拟表单上进行了尝试——通过“默认按钮”,它们实际上是指表单的 AcceptButton 属性。使用一组,AcceptsReturn 的值会有所不同;没有一组,它就没有效果。)

至于 KeyPress,虽然在这种情况下这显然不是最好的方法,但我过去不得不使用类似的技巧 - 你是否记得在你自己处理事件的情况下将 e.Handled 设置为 true ?

于 2012-05-08T17:35:51.427 回答
3

该表单有一个名为AcceptButton的属性。那是指向您调用默认按钮的按钮吗?

我刚刚写了一个小测试,它似乎对我有用。

于 2012-05-08T17:32:01.877 回答