按Enter键时,单击工具栏按钮

时间:2011-03-09 09:50:28

标签: .net winforms

(ToolStripButton as Form的AcceptButton)

我有以下问题:

在我的表单中,我有一个工具栏,并希望默认情况下,Enter press操作不与标准的 OK 按钮相关联,而是与 OK 工具栏按钮(ToolStripButton)相关联)。

为了实现这一点,我需要实现IButtonControl接口,我在下面做了

代码:

public class MyTSB : System.Windows.Forms.ToolStripButton, IButtonControl
{
    public MyTSB()
        : base()
    {
    }

    DialogResult _DialogResult = DialogResult.None;
    public DialogResult DialogResult
    {
        get { return _DialogResult; }
        set { _DialogResult = value; }
    }

    bool isDefault = false;
    public void NotifyDefault(bool value)
    {
        this.isDefault = value;
    }

    protected virtual new void PerformClick()
    {
       // ???
    }

    void IButtonControl.PerformClick()
    {
        // ???
        this.OnClick(EventArgs.Empty);
    }
}

问题在于PerformClick功能。从一个部分来看,这个函数已经存在于ToolStripButton中,从其他的,我永远不会实现“点击”(设置为Form的acceptButton)toolstripButton ......

有什么问题?

1 个答案:

答案 0 :(得分:2)

你也可以像这样覆盖ProcessCmdKey - Form的方法:

protected override bool ProcessCmdKey(
        ref System.Windows.Forms.Message msg,
        System.Windows.Forms.Keys keyData)
{
    switch (keyData) {
        case Keys.Return:
            this.yourToolStripButton.PerformClick();
            break;

        default:
            return base.ProcessCmdKey(ref msg, keyData);
    }

    return true;
}