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的例子中,他希望在他的按钮点击事件中使用它。