【问题标题】:Call a third Form from the first Form从第一个表单调用第三个表单
【发布时间】:2015-01-14 08:42:53
【问题描述】:

我这里有一个“初学者”的简单情况:

我的主窗体有一个按钮调用第二个窗体 (form2),主窗体参数为:

在 Form1 中:

button_click

Form2 F2 = new Form2(this);
F2.Show();

在 Form2 中:

public class Form2(Form1 form1)    
InitializeComponent(); mainForm = form1;

好的,现在我有一个 Form3(Form1 form1),我想从 Form2 中调用它(显示),但是当我将代码放入第二种形式(Form2)时:

button_click

Form3 F3 = new Form3(this);    
F3.Show();

给我一​​个错误。我尝试用 (Form1 form1) 代替 (this) 但它不起作用。

Form2如何调用Form3?

【问题讨论】:

  • 究竟是什么错误?
  • 从通话中删除Form1

标签: c# forms


【解决方案1】:

您的尝试表明缺乏对参数如何传递给方法的理解,这与 winform 没有严格的关系。

无论如何,您已经声明了一个Form3,它将Form1 的实例作为参数。如果在Form2 代码中执行new Form3(this)this 将引用您当前所在的对象的实例,它是Form2 的实例,它与表单签名不匹配。

此外,您不能像您所做的那样将参数传递给声明其类型的方法 - new Form3(Form1 form1) - 因为它没有任何意义并且它不是有效的语法。

由于您已将Form1 实例引用存储在局部变量mainForm 中,并且您的Form3 需要Form1 的实例,您应该像这样实例化它:new Form3(mainForm)。确保 mainForm 变量可从您的实例化 Form3 的位置访问。

【讨论】:

    【解决方案2】:
    Form3 F3 = new Form3(mainForm);    
    F3.Show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-05
      • 2022-01-09
      • 1970-01-01
      相关资源
      最近更新 更多