【问题标题】:How do i control visibility Form1 from Form2如何从 Form2 控制 Form1 的可见性
【发布时间】:2020-10-13 19:54:06
【问题描述】:

我想让 Form1.Visable=true 和 Form2.Visable=false FROM Form2

我尝试过的:

Form1 FRM1 = New Form1;
FRM1.Show(); 

我想要什么:我想从 form2 代码中使 form1 可见 = true 而不创建新的 form1

我可以用 VB.NET 做到这一点,但我不能用 C# 做到这一点

【问题讨论】:

  • 创建 form2 时,将引用传递给 form1 并将引用保存为局部变量。然后在需要时调用 Hide() 方法。
  • 仍然会生成一个新的 form1 而不是现有的 form1
  • 因为我是初学者,你能不能给我写一个简单的。谢谢你:)

标签: c# c vb.net c#-4.0 controls


【解决方案1】:

将您想要关闭的表单的引用传递给您想要关闭它的表单。

显式传递引用:

public class Form1
{
    public Form1()
    {
        new Form2(this).Show();
    }
}

public class Form2
{
    Form1 form1;
    
    public Form2(Form1 form1)
    {
        this.form1 = form1;
        form1.Hide();
    }
}

通过设置 Form2 的所有者来传递引用:

public class Form1
{
    public Form1()
    {
        new Form2().Show(this); // show Form2 with Form1 as it's owner
    }
}

public class Form2
{
    public Form2()
    {
        this.Owner.Hide(); // hide this form's owner, in this case Form1
    }
}

您可能想了解的一些内容:

the 'this' keyword | Value vs Reference

【讨论】:

  • 如果您使用form2.Show(this),则不需要任何参考,只需this.Owner.Hide();(在Form2)。顺便说一句,new Form2(this); 并不完全正确。
  • @Jimi 很高兴知道将所有者传递给Show(),每天学习新东西。我认为传递参考对于初学者来说更容易理解和理解,但我同意Show(this) 方法会更干净。我会将您的建议添加到我的答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-04
相关资源
最近更新 更多