gpt4 book ai didi

c# - Windows 窗体 - 在窗体和控件之间传递参数

转载 作者:行者123 更新时间:2023-12-02 15:50:49 25 4
gpt4 key购买 nike

在我的 C# Windows 窗体项目中,我有:

  • mycontrol(键盘)

  • myform(它是文本框和 mycontrol 的布局)

我想运行myform中的一些代码,但是通过按mycontrol中的按钮)

例如:

当我在mycontrol中按退格按钮时,我只使用按钮事件

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() { 初始化组件(); 显示我的控件(); }

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

最佳答案

在 MyForm_Load 或其他任何地方,如果您动态初始化 MyControl,您可以添加诸如 MyControl.Click += new System.KeyEventHandler(this.MyControl_Click) 之类的内容,并放置一个名为

private void MyControl_Click(sender object, KeyEventArgs e)
{
... //Find out which key was pressed, proceed.
}

在 MyForm 中。当引发 Click 事件时将调用该方法。

关于c# - Windows 窗体 - 在窗体和控件之间传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15636469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com