如何在单击时通过其“子表单”“更新”表单

问题描述 投票:0回答:1

所以我得到了一个有 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 类更新的任何其他方法子类”,因为你不能以相反的方式调用静态。

c# .net forms event-handling
1个回答
0
投票

使用

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 问题的答案

© www.soinside.com 2019 - 2024. All rights reserved.