如何检查是否从另一个表单 C# 调用窗体



我有Form1,以这种形式,我有这个代码

Form2 frm = new Form2();
frm.ShowDialog();

所以现在是我的问题:如何知道form2是否像
form2中的按钮事件那样被调用?
form2的按钮事件中,我想检查ShowDialog()是否从FORM1(而不是从另一个表单(调用,如果单击按钮,form2关闭!

您可以使用 Form.Owner Property。

表格1:

Form2 frm = new Form2();
frm.ShowDialog(this); // owner parameter

表格2:

if (this.Owner != null)
{ 
// Owner is not null, there is a calling form
// Do something
if (this.Owner is Form1)
{
Form1 form1 = (Form1)this.Owner; // Form1 called this form!
}
}

请尽量更准确地说明您的要求。

public partial class Form2: Form
{   
public static bool wasCalledFromForm1 = false;
public Form2 (bool form1Called = false)
{
InitializeComponent();
wasCalledFromForm1 = form1Called;
}
private void Button1_Click(object sender, System.EventArgs e)
{
if (wasCalledFromForm1) this.Close;
}
}

按钮 1 打开窗体 2:

Form2 form2 = new Form2(true);
form2.ShowDialog();

据我了解,您想知道是否有办法检查 showDialog 是否已成功调用,为此您可以使用以下代码片段:-

Form2 frm = new Form2();
var result = frm.ShowDialog();
if (result == DialogResult.OK)
{
// apply your logic
}

PS:- 将来请正确仔细地撰写您的问题,以便我们更容易回答:) :) :)

构造函数的示例。

form2 frm2 = new Form2(calledByFrm1: true);
frm2.ShowDialog();
// ...
class Form2 ... 
{
boolean calledByForm1;
public Form2(boolean calledByForm1) 
{
this.calledByForm1 = calledByForm1;
}

public Form2_Onload .... 
{
if (this.calledByForm1) 
{
// your logic here
}
}
}

最新更新