winform程序中界面的跳转问题
首先是我们进行窗口间的跳转,尤其注意的是winform程序里面的空间都是中线程安全的。但是注意的是如果你在一个线程中操纵另外的控件,这时候会提示你一个错误,这个错误的解决方法准备单独的在另一篇文章中来讲。
好了,这时候回到主题上吧,怎么来实现界面间的跳转吧!假设我们想要从Form1跳转到Form2,那么可以有以下的集中方法:
1. 使用form的show属性(注:show弹出来的是普通无模式窗体,与下个要讲的ShowDialog是有区别的)
Form2 frm=new Form2();
frm.show();
this.close(); //this 这儿是Form1对象,例如在跳转到Form2后关闭释放所持有的资源
this.Dispose(); //这也是为了释放资源
注:Dispose()也是用来释放资源的,但是不同的是如果窗体属于多文档界面应用程序的一部分且是不可见的,那么Close将不会释放窗体,从而我们必须自己手动调用Dispose来释放窗体资源。
还有要注意的是在无模式窗体上调用Close方法时候,不能调用Show方法使得窗体可见,因为窗体的资源已经被释放。所以若是要隐藏窗体,那么可以调用Control.Hide方法。
2.使用form的ShowDialog属性
Form2 frm=new Form2();
frm.ShowDialog();
this.Dispose();
使用ShowDialog和show产生的窗体到底有什么不一样呢?呵呵,其实ShowDialog弹出的窗体是一种有模式的对话框,并且当前活动的窗体为弹出的窗口的持有者。
窗体和对话框要么是有模式的,要么是无模式的。“模式”窗体或对话框必须关闭或隐藏,然后才能继续使用应用程序的其余部分
还有注意的是在多线程里面,调用用showdialog方法可以避免线程的错误,具体原因也不是很清楚。
3.可以在Program.cs中做手脚
我们知道,Program里面的程序是配置了我们整个应用程序的入口点。那么就修改吧,
将以下的本来的代码注释掉:
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new logForm());
改成:
Form logFrm = new logForm(); //为第一个显示的窗体
if (logFrm.ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm()); //为第二个要弹出的窗体
}
然后只要在要跳转的代码段写如下:
this.DialogResult = DialogResult.OK; //this 指向的是logForm
这样就OK了。
winform程序中界面的跳转问题的更多相关文章
- 在Winform程序中设置管理员权限及为用户组添加写入权限
在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...
- (转)在Winform程序中设置管理员权限及为用户组添加写入权限
本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行 ...
- Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题)
Halcon的HWindowControl控件在WinForm程序中的使用介绍(重点解决图片缩放的问题) 2016-12-04 20:11 362人阅读 评论(4) 收藏 举报 分类: Halco ...
- 在Winform程序中使用Spire.Pdf实现页面添加印章处理
在一些场合,我们往往需要使用印章来给每页文档加盖一个印章,以表示该文档经过某个部门的认证的,常规的做法就是打印文档后盖章,如果需要电子档再行扫描一下.这样的的处理,如果文档很多,且仅仅需要电子文档的就 ...
- WinForm程序中两份mdf文件问题的解决
在项目中用程序中嵌入mdf文件的方式来进行SQLServer数据库开发非常方便,用来发布开源项目等很方便,点击就可以运行,免部署,特别是在教学中用起来更加方便,老师不用先将数据库文件detach再发给 ...
- 在C#中winform程序中应用nlog日志工具
在C#中winform程序中应用nlog日志工具,配置文件简单应用. 文件名 nlog.config,请注意修改属性为"始终复制",发布时候容易遇到不存在文件的错误提示. 通过Nu ...
- C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
问题:C#中Winform程序中如何实现多维表头. 在网上搜了很多方法,大多数方法对于我这种新手,看的都不是很懂.最后在新浪博客看到了一篇比较易懂的文章:[DataGridView二维表头与合并单元格 ...
- .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件
系列目录 [已更新最新开发文章,点击查看详细] WebView2组件支持在WinForm.WPF.WinUI3.Win32应用程序中集成加载Web网页功能应用.本篇主要介绍如何在WinForm ...
- .NET混合开发解决方案8 WinForm程序中通过设置固定版本运行时的BrowserExecutableFolder属性集成WebView2控件
系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<.NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件>中介绍了WinForm ...
随机推荐
- C#后台执行bat
C#后台执行bat ProcessStartInfo p = new ProcessStartInfo(); p.FileName = "C:\\1.bat"; p.WindowS ...
- 文本编辑器 CKEditor 用法
最新文本编辑器,FCK升级版:CKEditor.NET CKEditor.NET.dll 版本:3.6.4.0 官方网址:http://ckeditor.com/ 效果图: 配置web.c ...
- centOS 下解压 rar zip 文件
闲话不说,centos上如何安装rar.unrar在线解压缩软件呢?如果您的centos是32位的,执行如下命令: wget http://www.rarsoft.com/rar/rarlinux-3 ...
- 有7g和2g的砝码各一个,怎样称可以3次把140g东西分为50g和90g???????
第一次:等分 50和90为 70 70 2. 7g 和2g ,取出一个70中的9g , 61 70 3.利用 9g和2g砝码,取出61中的11克,前面的9 和 11 都放进70
- 洛谷1440 求m区间内的最小值
洛谷1440 求m区间内的最小值 本题地址:http://www.luogu.org/problem/show?pid=1440 题目描述 一个含有n项的数列(n<=2000000),求出每一项 ...
- Poj 2299 - Ultra-QuickSort 离散化,树状数组,逆序对
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 52306 Accepted: 19194 ...
- 排列的Java递归语言实现
在做算法题的时候,发现排列经常被使用到,是一个重要的知识点, 下面是博主修改过的代码,初学者,如有不足,欢迎指出 import java.util.ArrayList; import java.uti ...
- SecureCRT 实用配置
SecureCRT,是一款支持 SSH2.SSH1.Telnet.Telnet/SSH.Relogin.Serial.TAPI.RAW 等协议的终端仿真程序,最吸引我的是,SecureCRT 支持标签 ...
- Swift中自定义Log打印方法
系统如何调用super方法 系统默认只会在构造函数中,自动调用super.init()方法,而且是在所写方法的尾部进行调用. 在其他函数中,如何需要调用父类的默认实现,都需要手动去实现. 如果在构造函 ...
- 设计 REST 风格的 MVC 框架
http://www.ibm.com/developerworks/cn/java/j-lo-restmvc/ 传统的 JavaEE MVC 框架如 Struts 等都是基于 Action 设计的后缀 ...