所以我得到了一个有 2 个窗口的基本游戏,一个是主游戏,一个是设置菜单,它们都是 Form 的子类,但是事件处理程序 f2.MouseClick (第二种形式)仅在开始时触发,并且在以下情况下永远不会工作我打开了 Class 2 表格并用鼠标四处移动。我对事件处理程序做错了什么吗?
Class1: Form{
public Class2 f2 = new Class2();
public class1(){
f2.MouseClick += Changesettings;
}
public {Some eventhandler for mouseclick}
}
Class2: Form{
}
我尝试将它链接到类似绘画并在本地进行,但它们都不会从第二种形式触发,所以我认为它根本不会触发,因为我不知道在“单击”时触发 1 类更新的任何其他方法子类”,因为你不能以相反的方式调用静态。
使用
eventhandler
中的 ChildClass
并调用它来触发 ParentClass
动作关闭 child.eventargs += trigger;
解决了这个问题
使用以下代码:
public class ParentClass
{
public void ShowChildClass()
{
var child = new ChildClass();
child.OnChildButtonClicked += ParentEventHandler;
child.Show();
}
public void ParentEventHandler(object sender, EventArgs e)
{
Console.WriteLine("Invoked!");
}
}
public class ChildClass
{
public event EventHandler OnChildButtonClicked;
public void Show() { }
public void OnSomeKind_OfEvent()
{
OnChildButtonClicked?.Invoke(this, EventArgs.Empty);
}
}
在 r/csharp 上复制了 sjetware 的 Reddit 问题的答案