我有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
}
}
}