2011-03-09 42 views
0

(ToolStripButton爲形式的的AcceptButton)即可進行點擊就當我按Enter鍵工具欄按鈕

我有以下問題:

在我的表單中我有一個工具欄,並想使之成爲默認的輸入按行動關聯不符合標準確定按鈕,但帶有確定工具欄按鈕(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)tooltripButton ...

什麼是錯?

回答

2

你也可以覆蓋Form這樣的ProcessCmdKey - 方法:

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; 
} 
+0

你的代碼工作得很好(你只是在最後一個函數忘記「裁判」)。但是,我想知道我試圖做的替代實現。 – serhio 2011-03-09 10:40:59

+0

@serhio:固定。 – Bobby 2011-03-09 12:08:16

+0

)),不值得。 – serhio 2011-03-09 12:35:52