跨阶级沟通

本文关键字: | 更新日期: 2023-09-27 17:57:58

我正在运行一个包含大多数UI元素的主WinForm,然后在选择Add按钮时调用Add表单。它应该接收输入,并在接受后将其发送回WinForm。

当你点击主类上的"添加"按钮时,这个代码就会运行:

    public void addButton_Click(object sender, EventArgs e)
    {
        AddView newadd = new AddView();
        newadd.Show();
    }

这个代码(也在主类中)应该基于AddView:中的按钮运行

    public void AddDashObject(string dashName, string dashIdentifier, int dashFunction, string dashFunctionInfo, int dashVerbosity)
    {
        DashObject tmp = new DashObject("","",0,"",0);
        tmp.DashName = dashName;
        tmp.DashIdentifier = dashIdentifier;
        tmp.DashFunction = dashFunction;
        tmp.DashFunctionInfo = dashFunctionInfo;
        tmp.DashVerbosity = dashVerbosity;
        dashloaded.Add(tmp);
        ReloadDashObjects();
    }

我真的不确定如何在表单之间进行通信——我可以使用在主类中创建的类型和方法,但我很确定我正在创建一个单独的实例。我如何与现有的沟通?

    MainView mnfrm = new MainView(); 
    MainView.DashObject tmp = new MainView.DashObject("","",0,"",1); // Defaults
    private void button1_Click(object sender, EventArgs e)
    {
        mnfrm.dashloaded.Add(tmp); // Add the default DashObject to MainView's currently loaded DashObjects
        mnfrm.ReloadDashObjects(); // Reload the list
    }

不知道该如何处理——有什么建议吗?

跨阶级沟通

由于Add对话框应为模态对话框,因此执行此操作的解耦方法是只关闭状态为OK的对话框。也就是说,表单只是一个实际上不"做"任何事情的输入控件。

那么主要形式可以是:

1) 检查ShowDialog()之后对话框是如何关闭的,

2) 调用一些GetResult()函数,在处理之前从add表单中获取值。

3) 调用实际创建和重新加载DashObjects的业务逻辑。

相关文章:
  • 没有找到相关文章