私のC#Windowsフォームプロジェクトには、次のものがあります。
mycontrol(キーボードです)
myform(テキストボックスとmycontrolのレイアウト)
myformにあるコードを実行したいのですが、 mycontrolのボタンを押します)
例えば:
mycontrolでBackspaceボタンを押すと、ボタンイベントを使用します
SendKeys.Send("{BACKSPACE}");
とmyformテキストボックスは、Backspaceキーを押したことを認識しています。
しかし、私はいくつかのカスタムボタン(機能的)を持っており、それらのボタンはmyformで定義する必要があります
たとえば、myformでは次のようになります。
private void btnOK_Click(object sender, EventArgs e)
{
DoSomething();
}
全体の問題は、myformbtnOK_ClickまたはDoSomethingをmycontrolから実行する方法です。
更新#2:
D0、NullReferenceを押している間、nullかどうかのチェックを削除しても何も起こりません。
内部部分クラス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;
}
}