.net使用enter键触发按钮

.net使用enter键触发按钮,.net,button,c++-cli,.net,Button,C++ Cli,在.net中,我在tab控件上有一个tabpage。我在tabpage中添加了一个按钮,希望enter键触发该按钮 如何执行此操作?您可以设置Form.KeyPreview=true,然后 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Return) { e.Handled = true;

在.net中,我在tab控件上有一个tabpage。我在tabpage中添加了一个按钮,希望enter键触发该按钮


如何执行此操作?

您可以设置
Form.KeyPreview=true
,然后

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Return)
        {
            e.Handled = true;
            e.SuppressKeyPress = true;
            button1_Click(sender, EventArgs.Empty);
        }
    }
或者(正如@ChrisF告诉你的)
您可以设置
Form.AcceptButton=button1
并完成作业

这就是ProcessCmdKey()方法的设计目的。像这样覆盖它:

protected:
    virtual bool ProcessCmdKey(Message %msg, Keys keyData) override {
        if (keyData == Keys::Enter) {
            button1->PerformClick();
            return true;
        }
        return __super::ProcessCmdKey(msg, keyData);
    }

Form::AcceptButton适用于对话框。

您可以将按钮设置为默认值-Visual Studio中显示了一个属性-这是按下enter键时执行的操作。有一个属性为IsDefault,但当我将IsDefault属性设置为true时,它给出了一个错误:“System::Windows::Forms::ButtonBase::IsDefault::set”:候选函数不可访问这可能会帮助您:[如何使用Enter调用事件处理程序?][1][1]:但它不仅仅是一个按钮;我在表单上添加了一个tab控件。比如说3个标签页和一个按钮。第一页选项卡上的A按钮,第二页选项卡树上的B按钮。。。当第二个选项卡页打开时,enter键必须触发B按钮。@user983924:在我的第一个解决方案中,每当您在表单中的任何地方按一个键时,都会引发该过程;所以你们抓住了回车按钮,看着tab控件选择了索引,点击你们想要的运行按钮!我写了它,但它不处理“回车”,它处理其他键,如shift或“s”字符。当我按enter键时,程序什么也不做。也许你在其他地方“陷害”enter键?你试过调试吗?我想你是对的,表单选择了它的一个控件,并使用“回车”键。我认为这与标签索引有关。你知道吗?为什么不适合我?我设置了断点,但它从未通过那里。我使用了一个关键事件处理程序来完成这项工作。