来自第二种形式的 C# 'callback'

标签 c# .net callback

我正在尝试从 C# 中的第二个表单回调,但是失败了,有人可以帮忙吗?

    // Form 1 (Main form)
    public void CallBack()
    {
         if (radioBox1.Checked)
         {
              RefreshForm("TRUE");
         }
         else if (radioBox2.Checked)
         {
              RefreshForm("FALSE");
         }
    }

    private void RefreshForm(string Options)
    {
         // Do something here
    }

现在是第二种形式

    // Form 2 (Child Form)
    Form1 form1 = new form1();
    private void timer1_Tick(object sender, EventArgs e)
    {
          form1.CallBack();
    }

遗憾的是,回调无法正常工作,我是否编码错误?请帮忙...非常感谢!

最佳答案

它不会起作用,因为您在刚刚创建的 Form1 的新实例上调用 CallBack,该实例与主窗体不是同一实例。

您需要以某种方式引用主表单,例如:

(Application.OpenForms[0] as Form1).CallBack();

假设主窗体 (Form1) 是应用程序的第一个打开的窗口。

关于来自第二种形式的 C# 'callback',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15270151/

相关文章:

c# - 从 .Net 应用程序处理 MySql 数据库的正确方法是什么

javascript - setTimeout(callback) 后跟 while 循环从不触发

c# - 将字符串解析为没有斜杠的日期

c# - XInclude 的替代品

javascript - 将 Ajax 回调函数值分配给 JavaScript 变量

node.js - 如何减少 NodeJS/Mongoose 中的代码重复

c# - 是否可以在针对 4.7.1 的 WinForms 项目中使用 Path.GetRelativePath (.NET Core2)?

c# - 转换器在运行时没有被调用

c# - 如何递增地循环窗体对象

c# - Ninject:获取服务在我的业务层不起作用