在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
C#中Form的操作: 关闭用Close(); 隐藏用Hide(); 新打开一个用new Form(); 主窗体的生成代码一般是这样的: 1 static class Program 2 { 3 /// <summary> 4 /// 应用程序的主入口点。 5 /// </summary> 6 [STAThread] 7 static void Main() 8 { 9 Application.EnableVisualStyles(); 10 Application.SetCompatibleTextRenderingDefault(false); 11 Application.Run(new Form1()); 12 } 13 }
这里Application.Run(new Form1());是应用程序的主入口点。也就是Form1是主窗体,关闭后整个程序都会关闭。 执行Application.Run(new Form1());之后,会默认新建主窗体(即Form1)并可见。这时候,如果在Form1里面的某个响应函数里打开新的窗体,可以如以下代码: private void button1_Click(object sender, EventArgs e) { this.Hide(); // here "this" is point to Form1, //so it means to hide the main Form Form1 new Form2().Show(); } 可以看到,这里只能通过this.Hide();把主窗体隐藏掉了(注意:不能执行this.Close();,因为Form1是主窗体,关闭后就直接退出程序了。) 那么,在执行完new Form2().Show(); 新建了一个窗体Form2并显示之后,怎么显示原来被隐藏掉的主窗体Form1呢???这就是关键。 解决方法有哪些? 首先分析一下,主窗体是通过这行代码创建的: 1 Application.Run(new Form1()); 这是一个匿名对象,无法找到引用了吧?网上所谓的“this.Show();"根本就是一个笑话了,this引用了哪个对象呢?看下面的提示: 显然,this指针还是当前对象的引用并不是主窗体的引用。(ps:有木有全局变量是记录主窗体对象的引用呢?刚开始接触C#,思考中) 我能想到的,就是:方法1:新建一个主窗体对象并显示。 至于能不能建立一个全局变量,用于引用主窗体对象呢?这是一个思路,各位看官可以手动探索一番。 |
请发表评论