Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows窗体应用程序顺序显示对话框()s_C#_Forms_Winforms_Visual Studio_Showdialog - Fatal编程技术网

C# Windows窗体应用程序顺序显示对话框()s

C# Windows窗体应用程序顺序显示对话框()s,c#,forms,winforms,visual-studio,showdialog,C#,Forms,Winforms,Visual Studio,Showdialog,我在关闭对话框表单时遇到了一个有趣的问题。 问题是: 我运行应用程序并打开第二个表单(通过菜单条)作为showdialog()然后从第二张表格打开第三张表格。当我通过按钮1打开第三个表单,然后关闭它时,一切正常,但当我通过按钮2打开第三个表单,然后关闭它时,第三个表单将关闭,然后它也关闭第二个表单!!!在第二个表单中,当我显示消息框并将其关闭时,第二个表单也将关闭 这是我的密码: 从第一个表单代码打开第二个表单: private void settingsToolMenu_Click(objec

我在关闭对话框表单时遇到了一个有趣的问题。 问题是:

我运行应用程序并打开第二个表单(通过菜单条)作为
showdialog()然后从第二张表格打开第三张表格。当我通过
按钮1
打开第三个表单,然后关闭它时,一切正常,但当我通过
按钮2
打开第三个表单,然后关闭它时,第三个表单将关闭,然后它也关闭第二个表单!!!在第二个表单中,当我显示
消息框并将其关闭时,第二个表单也将关闭

这是我的密码:

从第一个表单代码打开第二个表单:

private void settingsToolMenu_Click(object sender, EventArgs e)
    {
        settingsForm s1 = new settingsForm(this);
        s1.ShowDialog();
    }
private void addReportButton_Click(object sender, EventArgs e)
    {
        addReport a1 = new addReport(this);
        a1.ShowDialog();
    }
private void editReportButton_Click(object sender, EventArgs e)
    {
        addReport a2 = new addReport(this);
        a2.ShowDialog();
    }
通过
按钮1从第二个打开第三个表单
表单代码:

private void settingsToolMenu_Click(object sender, EventArgs e)
    {
        settingsForm s1 = new settingsForm(this);
        s1.ShowDialog();
    }
private void addReportButton_Click(object sender, EventArgs e)
    {
        addReport a1 = new addReport(this);
        a1.ShowDialog();
    }
private void editReportButton_Click(object sender, EventArgs e)
    {
        addReport a2 = new addReport(this);
        a2.ShowDialog();
    }
通过
按钮2从第二个打开第三个表单
表单代码:

private void settingsToolMenu_Click(object sender, EventArgs e)
    {
        settingsForm s1 = new settingsForm(this);
        s1.ShowDialog();
    }
private void addReportButton_Click(object sender, EventArgs e)
    {
        addReport a1 = new addReport(this);
        a1.ShowDialog();
    }
private void editReportButton_Click(object sender, EventArgs e)
    {
        addReport a2 = new addReport(this);
        a2.ShowDialog();
    }
如您所见,
按钮1
按钮2


是应用程序正在运行的视频。

不确定那里发生了什么,但应该有
.Show()
方法,它以不同的方式运行窗口,包括关闭策略。试试看。

试试这个

而不是

addReport a2 = new addReport(this);
a2.ShowDialog();
使用

然后单击对话框窗口的退出/关闭按钮

private void BtnExit_Click(object sender, EventArgs e)
    {
        this.Dispose();
    }

希望这能解决您的问题。

我使用了这段代码,它很有效。我有3个表单,第一个表单在运行应用程序时打开,第二个表单用按钮打开(可以是menustrip,没关系),然后第三个表单也是这样打开的,关闭第三个表单后第二个表单保持打开状态

FormN fm = new FormN();
fm.ShowDialog();
在通过单击按钮调用的每个方法中使用这段代码,它应该可以正常工作。只需更改表单名称的“FormN”。此外,如果需要将任何表单的属性传递到下一个表单,可以执行以下操作:

第一种形式的代码:

    public string mytext; //Variable I want to use later, in Form2.
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        mytext = tb1.Text;
        Form2 fm = new Form2(this);
        fm.ShowDialog();
    }
请注意,在调用“fm.ShowDialog();”之前,我是如何将“tb1”(TextBox1)的值保存在变量中的,以便稍后在表单2中使用TextBox1值的

第二种形式的代码,具有主形式的变量(例如“mytext”值)


这样,您就创建了一个主窗体的对象(“Form1 mfm;”),在调用第二个窗体之前包含了所有变量,也可以用于第三个窗体。

在第二个窗体中
formClosing()
事件我编写了以下代码:

private void settingsForm_FormClosing(object sender, FormClosingEventArgs e)
{
    if(e.CloseReason != CloseReason.UserClosing)
    {
        e.Cancel = true;
    }
}

除了用户外,没有任何东西可以关闭第二个表单

如果先按
按钮2
,然后再按
按钮1
,会不会同时关闭第二个表单(
设置表单
)?能否显示您的addReport表单'a代码?@mohamadkamal:请共享导致此问题的第三个对话框的代码?