关于C#编写界面时如何在子窗口显示已经隐藏的主窗口

在网上经过搜索之后,我发现没有找到我想要的答案,大部分都是可以从主窗口隐藏和显示子窗口,反过来貌似不太容易做到

在网上发现一个很有用的忠告是:

不管用什么办法,别在子窗口用new创建主窗口对象,这样只会创建一个新的主窗口,而不会显示隐藏起来的原来的主窗口

并且调用主窗口的close函数关掉的也是新创建的对象

因此目前我想到的办法是,定义一个静态bool变量,作为标志位,当需要在子窗口中显示主窗口时,就将此标志位设为true

然后在主窗口创建一个定时器控件,检测此标志位是否发生变化,若变为true,则调用主窗口的show函数,将隐藏的主窗口显示出来

这样就成功解决了问题,窗口显示的速度取决于定时器设定的定时值,若设置为100ms,则几乎是瞬间显示,500ms则会明显出现一定时间的卡顿

注意:标志位记得重置

///主窗口中的方法
//标志位
public static bool Form1Flag = false;

//定时器
private void timer1_Tick_1(object sender, EventArgs e)
{
    if (Form1Flag)
    {
        this.Show();
        Form1Flag = false;
    }
}


///子窗口中的方法
//子窗口的按键
private void CertifyPlan_Click(object sender, EventArgs e)
{
    this.Hide();            //将子窗口隐藏
    Form1.Form1Flag = true; //主窗口标志位设为true,用以显示主窗口
}

分享一点小技巧,若有更好的方法或者错误,请麻烦指出,一定认真学习改正

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值