C#窗口跳转

sam10000 2020-08-26 08:26:03
我创建了两个窗口,Form1,Form2;
在FORM1里:按钮事件为:
1: Form2 jh;
:2: jh = new Form2();
:3: jh.Show();
4: this.Hide();

在FORM2里:按钮事件为:
1: Form1 jh1;
:2: jh1 = new Form1();
:3: jh1.Show();
4: this.Hide();

问题1:这样的话,两个窗口经常需要通过按钮跳转,那就有很多的NEW了,这样会造成内存过多消耗吗?因为NEW太多了,每按一次按钮,
就有一个NEW;

问题2:另外,两个窗口是一个线程还是两个线程在运行?

问题3:窗口HIDE,窗口还在运行对吗?




...全文
1283 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
我头发呢_ 2020-08-27
  • 打赏
  • 举报
回复
放一个panel,在panel里面判断Controls.Count是否大于1
SubMain 2020-08-26
  • 打赏
  • 举报
回复
new多了不释放的话内存肯定增加,即便Hide了内存也不会释放。
你可以在两个窗口中分别存储另一个的实例,需要时Show下
zz95831 2020-08-26
  • 打赏
  • 举报
回复
差不多就这个意思

//Form1
        private Form2 form;
        public Form1()
        {
            InitializeComponent();
            form = new Form2(this);
            this.StartPosition = FormStartPosition.Manual;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            form.Location = this.Location;
            form.Size = this.Size;
            form.Show();
        }
//Form2
        private Form1 form;
        public Form2(Form1 form)
        {
            InitializeComponent();
            this.form = form;
            this.StartPosition = FormStartPosition.Manual;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Hide();
            form.Location = this.Location;
            form.Size = this.Size;
            form.Show();
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
threenewbee 2020-08-26
  • 打赏
  • 举报
回复
一个窗口上叠放多个panel,通过visible或者BringToFront切换
zz95831 2020-08-26
  • 打赏
  • 举报
回复
Hide了也在运行的,new完把两个窗口的引用留着呗

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧