【问题标题】:C#, Winform: How to pass information from one form to another [duplicate]C#,Winform:如何将信息从一种形式传递到另一种形式[重复]
【发布时间】:2017-11-09 12:56:38
【问题描述】:

我有两个表格,Form1 和 Form2。 Form1 已经在后台打开,form2 在上面打开showdialog()
我想在关闭它之前从 Form2 调用 Form1 中的一个方法。
这是我的代码:

// In the form1
form1  frm = (form1)Form.ActiveForm;
frm.AfterConnect();
Close();

【问题讨论】:

  • 这个问题已经回答了很多次了。请使用搜索功能。
  • 在启动时将 Form1 的引用传递给 Form2?
  • Form1 是否创建并显示Form2?如果是这样,您可以在 Form2 的构造函数中要求 Form1 的实例,并在创建时传递引用。
  • 我的问题 m.rogalski 没有找到合适的答案

标签: c# .net winforms


【解决方案1】:

你必须找到表单并调用方法,例如

using System.Linq;

...

Application.OpenForms
  .OfType<Form1>()     // Among the all opened forms of Form1 type 
  .LastOrDefault()     // Take the last one (or null if there's no such form)
 ?.AfterConnect();     // And call AfterConnect() on it (if the form has been found) 

【讨论】:

  • 如果我不想调用在 Fom1 中找到的方法,而是想访问 Usercontrols 中的方法...如何?
  • 如果您理解正确,您想触发控件的事件(例如单击按钮 - MyButtonClick(object sender, EventArgs e) {...});如果是您的情况,我建议提取方法,将其公开为公共方法:public void DoSomething() {...} 并调用事件处理程序:MyButtonClick(object sender, EventArgs e) {DoSomething();}。您仍然可以使用答案中的代码调用此公开方法。
【解决方案2】:

您可以在 Form2 中创建一个属性(Form1 类型)。然后从 Form1 打开 Form2 时设置属性。现在您可以从 Form2 调用 Form1 中的任何公共方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    相关资源
    最近更新 更多