winform 创建窗口句柄时出错
最近在做一个winform 的项目,由于是需要多页面切换跳转的,所以用了MDI窗体,经常需要子窗体之间跳转,窗体的跳转的代码如下:
FormFaceLogin frm = new FormFaceLogin();
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
//设置新窗体的Parent
frm.Parent = this;
//释放资源
foreach (Control item in this.Controls)
{
item.Dispose();
}
this.Controls.Clear();
this.Controls.Add(frm);
frm.Show();
窗体切换的次数多了,就会报错:创建窗口句柄时出错,尝试了各种办法都没有解决,最后通过断点调试,发现窗体跳转的时候,并没有执行FormClosed方法和FormCloseing方法,然后每一次跳转窗体的时候,就会重新new一次窗体对象,对象一直在增加,但是并没有销毁,知道了问题所在,就好解决了,解放方案如下:
1.新建一个子窗体FrmChild ,在FrmChild 写一个公共的方法:
public void FindChildForm(Type type)
{
Form frm = null;
//在当前程序中查找要打开的窗体是否已经new过,如果已经创建了对象,直接激活,否则创建。
foreach (Form frmChild in Application.OpenForms)
{
if (frmChild.GetType() == type)
{
frm = frmChild;
frm.BringToFront();
frm.Activate();
}
}
if (frm == null)
{
frm = (Form)Activator.CreateInstance(type);
frm.TopLevel = false;
frm.Dock = DockStyle.Fill;
frm.FormBorderStyle = FormBorderStyle.None;
frm.Parent = FormMdi.GetPanel;//此处在FormMdi窗体设置子窗体时,记录了控件的父容器,所有子窗体的父容器都为FormMdi.GetPanel
frm.BringToFront();
frm.Show();
}
}
2.所有的子窗体都继承FrmChild ,在窗体跳转时,直接调用FindChildForm方法:
FindChildForm(typeof(FormCardIndex));
winform 创建窗口句柄时出错相关推荐
- devexpress 创建窗口句柄时出错_实验一 线程的创建和撤销
实验内容:编写和调试一个程序,实现Windows系统环境下通过API函数进行线程创建与撤销. 实验目的: (1) 熟悉Windows系统提供的线程创建和撤销系统调用: (2) 掌握Windows系统环 ...
- devexpress 创建窗口句柄时出错_MATLAB函数句柄
1.何为函数句柄? 函数句柄也是MATLAB中的一种常见的数据类型, 它的地位类似于其它计算机语言里的函数对象(Javascript,Python),函数指针(C++),或者函数引用(Perl). 它 ...
- System.ComponentModel.Win32Exception:“创建窗口句柄时出错。 如何解决
琢磨两天终于已解决. 原来原因是用了第三方控件的原因. 换了datagridview 框架本身的控件就可以了.
- 创建窗体时出错。有关详细信息,请参阅 Exception.InnerException
创建窗体时出错.有关详细信息,请参阅 Exception.InnerException.错误为: 未能加载文件或程序集"xxx, Version=1.0.0.0, Culture=neutr ...
- mysql中创建视图语法错误_mysql - 使用过程MySQL创建视图时出错 - 堆栈内存溢出
尝试使用过程创建视图时出现问题. 我必须这样做,因为我需要在MySQL中发挥作用,将表的行转换为另一个表的列. 该查询效果很好,但是当我将其放在" CREATE VIEW"语句中时 ...
- lucene创建索引时出错:扑捉到FileNotFoundException
lucene创建索引文件出错,如下图: 解决方案: 解锁即可 代码如下: bool isUpdate = IndexReader.IndexExists(directory);if (isUpdate ...
- 思科交换机创建Vlan时出错的解决方法(一)
目录 问题 解决思路 解决问题 总结 问题 思科2960机器恢复出厂设置后无法新建VLAN.问题复现如下: (根因:VTP服务错误) Switch(config)#vlan 175 VTP VLAN ...
- 思科交换机创建Vlan时出错的解决方法(二)
目录 问题 解决思路 总结 问题 思科3560机器,当配置多个vlan时候,在鍵入exit或apply时候经常会出现下面的出错信息,使得无法创建新的vlan.问题复现如下: 根因:存储空间不足 SW1 ...
- mysql 创建触发器出错_mysql-在phpmyadmin中创建触发器时出错
我创建了非常简单的触发器,我认为syntex也正确: CREATE TRIGGER trig1 after INSERT ON urlcontent for each row BEGIN insert ...
最新文章
- WordPress制作圆形头像友情链接页面的方法
- Python2、Python3相对路径、绝对路径导入
- 1.3 继承(extends)
- 嵌入式Linux之旅——环境搭建篇之烧写整个系统
- mysql数据库增删改查关键字_Mysql数据库,增删改查笔记(非常重要)-阿里云开发者社区...
- java接口返回类,Java接口和返回类型 - java
- proc wifi 开启_49.Linux-wpa_cli使用之WIFI开启,扫描热点,连接热点,断开热点,WIFI关闭(49)...
- ubuntu装指定分区_Ubuntu安装过程中如何手动指定分区
- matlab tic和toc单位,matlab toc tic 的用法
- B.系数(mod意义下的系数转化+lucas)
- Windows 10与微软公有云Azure
- 数贝携手付晓岩老师带你玩转“企业架构”
- js html占位符,JavaScript占位符
- 【Verilog数字系统设计(夏雨闻)5-------模块的结构、数据类型、变量和基本运算符号1】
- 【WLAN】【测试】Linux下aircrack-ng的应用之空口抓包全解
- 微信小程序中定位报错在app.json中声明permission字段
- 概率论与数理统计-下篇
- 仅用半年时间,我的月薪从3K飞跃到17K,纵有疾风起,人生不言弃
- 【docker】——docker项目中使用phantomjs实现网页快照缩略图
- Java初学Text10---SOSO营业厅系统