在Form1中使用相同的Button简单打开/关闭Form2

时间:2016-03-18 05:07:33

标签: c# forms

这个问题有很多变化,我可能会全部阅读;) 但我想这不是特别的。 当然,这不能像那样工作,因为我的Form2对象只存在于" button1_Click" ....至少我猜。 表格2应该是非模态的....但是它有很多方法...... Form1应该仍然可用。

using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private object frm;
        public bool form2IsOpen { get; set; }
        public Form1()
        {
            InitializeComponent();
            form2IsOpen = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {


                if (form2IsOpen == false)
                {
                Form2 frm = new Form2();
                frm.Show();
                form2IsOpen = true;
                   }
                else
                {
                    frm.Close();
                }

        }
    }
}

4 个答案:

答案 0 :(得分:1)

并不是 List<String> list = Arrays.asList(SENTENCE1); String[] sorted = Stream.of(SENTENCE2) .sorted(Comparator.comparing(s -> list.indexOf(s))) .toArray(String[]::new); System.out.println(Arrays.toString(sorted)); // -> [I like it, My favourite book, I put it in a shelf] 对象只存在于该方法中。如果您正在查看表单,那么显然该对象存在。它引用该对象的变量仅存在于该方法中。显而易见的解决方案是不将其分配给仅存在于该方法中的变量。所有方法中都存在哪种变量?当然是成员变量。你已经使用了一个用于旗帜,为什么不用于表格呢?

答案 1 :(得分:1)

如果您尝试做的只是打开并用一个按钮关闭表单,那么为什么不尝试这个

private void btnButton_Click(object sender, EventArgs e)
{
if(Form2.IsVisible){
    Form2.Hide();
}
else{
    Form2.Show();
}

}

这样它只需一个按钮即可打开和关闭表单

答案 2 :(得分:1)

除非有理由,请与HideShow一起玩,您不需要每次都创建Form

private void button1_Click(object sender, EventArgs e)
{
    if (form2.Visible) form2.Hide(); 
    else form2.Show();
}

答案 3 :(得分:1)

你正在重新宣布&#34; frm&#34;变量作为创建表单后超出范围的局部变量。这可以修复您在代码中尝试执行的操作。

public partial class Form1 : Form
{
    private Form2 frm;
    public bool form2IsOpen { get; set; }

    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (form2IsOpen == false)
        {
            frm = new Form2();
            frm.Show();
            form2IsOpen = true;
        }
        else
        {
            frm.Close();
            form2IsOpen = false;
        }
    }
}