(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 ......
有什么问题?
答案 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;
}