Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.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
.NET文本框-处理Enter键_.net_Winforms_Textbox - Fatal编程技术网

.NET文本框-处理Enter键

.NET文本框-处理Enter键,.net,winforms,textbox,.net,Winforms,Textbox,假定对键输入的所有权导致对文本框本身的回车键的抑制(e.Handled=true),根据用户在.NET文本框中输入的回车键(Keys.Enter)执行操作的最佳方式是什么 在本问题中,假设所需的行为不是按下表单的默认按钮,而是其他一些应该发生的自定义处理。添加按键事件并捕获enter键 从编程角度看,它有点像这样: //add the handler to the textbox this.textBox1.KeyPress += new System.Windows.Forms.KeyPres

假定对键输入的所有权导致对文本框本身的回车键的抑制(e.Handled=true),根据用户在.NET
文本框中输入的回车键(
Keys.Enter
)执行操作的最佳方式是什么


在本问题中,假设所需的行为不是按下表单的默认按钮,而是其他一些应该发生的自定义处理。

添加按键事件并捕获enter键

从编程角度看,它有点像这样:

//add the handler to the textbox
this.textBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(CheckEnterKeyPress);
然后在代码中添加一个处理程序

private void CheckEnterKeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
        if (e.KeyChar == (char)Keys.Return)

        {
           // Then Do your Thang
        }
}

您可以将其放入FormLoad事件中:

textBox1.KeyPress += (sndr, ev) => 
{
    if (ev.KeyChar.Equals((char)13))
    {
        // call your method for action on enter
        ev.Handled = true; // suppress default handling
    }
};

为了将函数与文本框的按键事件相链接,请在窗体的designer.cs中添加以下代码:

 this.textbox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.OnKeyDownHandler);
现在,在相同形式的cs文件中定义函数“OnKeyDownHandler”:

private void OnKeyDownHandler(object sender, KeyEventArgs e)
{

    if (e.KeyCode == Keys.Enter)
    {
       //enter key has been pressed
       // add your code
    }

}

如果希望某个按钮在程序执行时处理Enter,只需将窗体的AcceptButton属性指向该按钮即可


例如:
this.AcceptButton=StartBtn

我不明白这个问题。你是在问要执行什么动作,或者问如何执行,或者问如何在事件发生时得到通知?明确的最佳方式是什么都不做。Enter键在UI设计中具有明确的含义,不应被篡改。在一个窗体中任意使用它来更改焦点,在另一个对话框中使用AcceptButton只会让用户感到困惑不已。这里我要讨论的是如何处理与naive实现相关的警告,例如,如果您将数据绑定到Text属性,那么在您处理(比如)KeyDown事件时,数据源尚未使用存储在文本框中的值进行更新@汉斯·帕桑:我听到了。在本例中,它用于与可选(很少使用)其他输入配对的全文搜索框的上下文中。按enter键应执行搜索。这不会抑制默认处理。您只需添加
ev.Handled=true更新的帖子。也不是检查回车键的最佳方法。那么什么是最好的方法呢?你不需要在这里强制转换。此外,在文本框上执行数据绑定时,这也无法正常工作,因为数据源在按键和按键处尚未更新。返回capture.Thank。关于多余的演员阵容,你是对的。关于数据绑定的问题,您能否在数据绑定发生后添加按键事件?或者你可以用try/catch来吞下这个异常,对吗?现在演员阵容似乎不再多余;它拒绝在未经授权的情况下编译。