C# 如何检查表单是否从另一个表单C调用#
我有C# 如何检查表单是否从另一个表单C调用#,c#,C#,我有表格1,在该表格中,我有这个代码 Form2 frm = new Form2(); frm.ShowDialog(); 那么现在我的问题是:如何知道form2是否被这样调用 在表单2中的按钮事件中? 在form2中的按钮事件中,我想检查是否从FORM1(不是从另一个表单)调用ShowDialog(),,如果单击按钮,form2关闭 据我所知,您想知道是否有办法检查showDialog是否已成功调用,为此,您可以使用以下代码段:- Form2 frm = new Form2(); var r
表格1
,在该表格中,我有这个代码
Form2 frm = new Form2();
frm.ShowDialog();
那么现在我的问题是:如何知道form2
是否被这样调用在
表单2中的按钮事件中
?在
form2
中的按钮事件中,我想检查是否从FORM1(不是从另一个表单)调用ShowDialog()
,,如果单击按钮,form2
关闭 据我所知,您想知道是否有办法检查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
}
}
}
请尽量使你的要求更准确
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();
你可以用
表格1:
Form2 frm = new Form2();
frm.ShowDialog(this); // owner parameter
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!
}
}
表格2:
Form2 frm = new Form2();
frm.ShowDialog(this); // owner parameter
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!
}
}
只需向
form2
的构造函数添加一个参数,或在form2
中设置一个属性(或方法),您可以键入示例代码吗?我不知道如何按照你说的去做看看我的答案。这可能是重复的(或接近重复):虽然这个问题质量很差,但我认为我设法提供了一个正确的解决方案。请参阅我的答案。这不是正确的答案-OP必须编写代码以确保表单返回该值。ShowDialog可以返回多个不同的值,但仍被成功调用-例如,如果通过单击左上角的关闭按钮关闭表单(许多人都会这样做),则默认返回值为DialogResult。取消而不是DialogResult.OK。感谢您指出@PaulF,由于问题不清楚,我没有详细检查所有条件,我希望提问者给出一些意见,无论如何,一旦问题被修改,我会收回或修改答案,以便正确理解:)记住,不应该在表单的构造函数中检查它,因为它还没有被命名,所以在OP的例子中,他希望在他的按钮点击事件中使用它。