Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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# 从表格2开始关闭表格1上的事件_C#_Winforms - Fatal编程技术网

C# 从表格2开始关闭表格1上的事件

C# 从表格2开始关闭表格1上的事件,c#,winforms,C#,Winforms,我有一个表单1设计,上面有一个关闭按钮,当按下关闭按钮时,你会在另一个表单(表单2)上得到一个文本框和一个ok按钮,当你在文本框中输入密码1234并按下ok按钮时,我希望它关闭表单2,然后关闭,e.cancel=false;表1,因为e.cancel=true;在Form1\u FormClosing方法中 表格一 表格二 总之,我想要像这样的东西 if (textBox1.Text == "1234") { Close(); e.Cancel=false;

我有一个表单1设计,上面有一个关闭按钮,当按下关闭按钮时,你会在另一个表单(表单2)上得到一个文本框和一个ok按钮,当你在文本框中输入密码1234并按下ok按钮时,我希望它关闭表单2,然后关闭,e.cancel=false;表1,因为e.cancel=true;在Form1\u FormClosing方法中

表格一 表格二 总之,我想要像这样的东西

 if (textBox1.Text == "1234")
 {      
    Close();
    e.Cancel=false;
    Form1.Close();
 }
如果这很容易做到,请不要恨我,但我对C#编程真的很陌生。

试试这样

form1上

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Form2 frm = new Form2();
            if (frm.ShowDialog() == DialogResult.Cancel)
            {
                e.Cancel = true;
            }
        }
form2上

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "12345")
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            else
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }
        }
像这样试试

form1上

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Form2 frm = new Form2();
            if (frm.ShowDialog() == DialogResult.Cancel)
            {
                e.Cancel = true;
            }
        }
form2上

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "12345")
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            }
            else
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
            }
        }
表格1:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(this);
            f2.ShowDialog();
        }        
    }
}
表格2:

  public partial class Form2 : Form
    {
        Form1 frm;
        public Form2(Form1 frm)
        {
            InitializeComponent();
            this.frm = frm;
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "12345")
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
                frm.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_FormClosingFalse);
               frm.Close();
            }
            else
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
                frm.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_FormClosingTrue);

            }
        }

        public void Form1_FormClosingTrue(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
        }
        public void Form1_FormClosingFalse(object sender, FormClosingEventArgs e)
        {
            e.Cancel = false ;
        }
    }
表格1:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnClose_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2(this);
            f2.ShowDialog();
        }        
    }
}
表格2:

  public partial class Form2 : Form
    {
        Form1 frm;
        public Form2(Form1 frm)
        {
            InitializeComponent();
            this.frm = frm;
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }

        private void btnOk_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "12345")
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
                frm.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_FormClosingFalse);
               frm.Close();
            }
            else
            {
                this.DialogResult = DialogResult.Cancel;
                this.Close();
                frm.FormClosing += new System.Windows.Forms.FormClosingEventHandler(Form1_FormClosingTrue);

            }
        }

        public void Form1_FormClosingTrue(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
        }
        public void Form1_FormClosingFalse(object sender, FormClosingEventArgs e)
        {
            e.Cancel = false ;
        }
    }


什么是
Close()?命令行关闭表单。为什么命令行,有什么具体原因吗?它会在条件满足后自动关闭我的表单2。我不希望用户在输入密码之前能够关闭表单。什么是
Close()?命令行关闭表单。为什么命令行,有任何具体原因吗?它会在条件满足后自动关闭我的表单2。我不希望用户在输入密码之前能够关闭表单。检查您输入的密码,我已给出“12345”是的,我输入了正确的密码,正如我所说的,Form2正在关闭,但Form1没有关闭,我想因为e.Cancel一定是假的,而u写的是真的,但是我尝试了使用true和false两个值,结果都不起作用。在form2上放置一个调试点,检查您的条件是否在if或else中?它在if语句中。您的
form1
是否从任何其他表单调用?检查您输入的密码,我已给出“12345”是的,我输入了正确的密码,正如我所说的,Form2正在关闭,但Form1没有关闭,我认为,因为e.Cancel必须为false,u写为true,但我尝试了true和false两个值,结果都不起作用。在Form2上设置一个调试点,检查您的条件是否在if或else中?它在if语句中。您的
Form1
是否从任何其他形式调用?