繁体   English   中英

隐藏并重新打开表格后保持更改 c# Visual Studio Windows Forms App

[英]Maintain the changes after hiding and re-open form c# visual studio Windows Forms App

我有一个程序有 5 个 forms。 表格 1 是一个带有 4 个按钮的“菜单”,每个按钮打开一个新表格。 但我希望能够对这些 forms(2 到 5)上的datagridviews进行一些更改,单击这些 forms、go 上的按钮,然后在隐藏时单击菜单按钮回来,我想仍然有我在datagridview上所做的更改。

我的问题是我在datagridview中有默认值,如果我添加行、删除行或更改某些单元格,然后单击 go 按钮到“菜单”

this.Hide();
Form1 sistema = new Form1 ();
sistema.ShowDialog();

然后回来

this.Hide();
Form2 sistema = new Form2 ();
sistema.ShowDialog();
this.Close();              

datagridview更改为它的默认值。 所以我想,例如,隐藏form2而不关闭并稍后返回,而不再次加载 form2,以便datagridview保持不变。

任何帮助表示赞赏。

这是因为您一直在创建新的 forms 而不是再次显示隐藏的 forms。

您可以在 class Program中存储对 forms 的引用,如下所示:

static class Program
{
    public static Form1 Form1 { get; private set; } // Add these two lines
    public static Form2 Form2 { get; private set; }

    [STAThread]
    static void Main()
    {
        Application.SetHighDpiMode(HighDpiMode.SystemAware);
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Form1 = new Form1(); // Add this two lines
        Form2 = new Form2();
        Application.Run(Form1); // <= Change this line
    }
}

现在你的两个代码片段变成了这样

this.Hide();
Program.Form1.ShowDialog();

然后回来

this.Hide();
Program.Form2.ShowDialog();
this.Close(); // After having done this, you can't show it again!

IE,您访问现有的表单对象而不是创建一个新的对象,然后使用.Show().ShowDialog()再次显示它们。


另一种解决方案是在另一个表单的构造函数中传递一个表单

    private Form2 _form2;

    public Form1(Form2 form2)
    {
        _form2 = form2;
        InitializeComponent();
    }

您可以通过私有字段访问它

_form2.ShowDialog();

您可以使用Application.OpenForms 属性来获取隐藏表单的实例。

// button in form1: hide the form1 
private void btnHide_Click(object sender, EventArgs e)
{
    this.Hide();
    Form2 form2 = new Form2();
    form2.Show();
}

// button in form2: reopen the form1
private void button1_Click(object sender, EventArgs e)
{
    Form1 form1 = (Form1)Application.OpenForms["Form1"];
    form1.Show();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM