在我的 C# Windows Forms 项目中,我有:
mycontrol(它是键盘)
myform(它是文本框的布局,和 mycontrol )
我想运行一些myform中的代码,但是通过按下mycontrol中的按钮)
例如:
当我在mycontrol中按 Backspace 按钮时,我只使用 Button Event
SendKeys.Send("{BACKSPACE}");
并且myform文本框知道我按了退格键。
但我有一些自定义按钮(功能),这些按钮应该在myform中定义
例如在myform我有:
private void btnOK_Click(object sender, EventArgs e)
{
DoSomething();
}
整个问题是 - 如何从mycontrol运行myform btnOK_Click 或 DoSomething
更新#2:
当我删除检查它是否为空时,按下 D0,NullReference 时没有任何反应。
内部部分类 myForm : BaseForms { public myForm() { InitializeComponent(); ShowMyControl(); }
private void ShowMyControl(){
KeyboardControl myControl = new KeyboardControl();
myControl.KeyboardKeyPressed += new Action<string>(OnMyControlKeyPressed);
this.Controls.Add(myControl);
}
private void OnMyControlKeyPressed(string key)
{
switch (key)
{
case "D0":
MessageBox.Show("A");
break;
case "D1":
MessageBox.Show("B");
break;
default:
MessageBox.Show("C");
break;
}
}
...
}
和
public partial class KeyboardControl : UserControl
{
public event Action<string> KeyboardKeyPressed;
...
private void HandlingMouseClick1(Point PressedItem)
{
...
case Keys.D0:
if (KeyboardKeyPressed != null)
KeyboardKeyPressed("D0");
break;
}
}