意外发现了winform的一个控件个数的极限

很久没来CSDN了,今天跟大家分享一个我的发现,调试这个的时间用了很久,希望大家在遇到类似问题时,不要走弯路.

如下图,我用反射在一个窗体上根据从数据库里取来的数据创建自定义控件,当完成1169个之后创建第1170个,而且每次都是在1170时,会报错,如下图.

有时则直接说发生 了一个异常,根本没把这个错误报出来.

大概是微软觉得你肯定不会在同一个窗体上创建1000多个控件吧.....托管(v4.0.30319)): 已加载“C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Transactions.resources\v4.0_4.0.0.0_zh-Hans_b77a5c561934e089\System.Transactions.resources.dll”

System.Transactions Critical: 0 : <TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Critical"><TraceIdentifier>http://msdn.microsoft.com/TraceCodes/System/ActivityTracing/2004/07/Reliability/Exception/Unhandled</TraceIdentifier><Description>未处理的异常</Description><AppDomain>YDHfw2015.vshost.exe</AppDomain><Exception><ExceptionType>System.ComponentModel.Win32Exception,
System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</ExceptionType><Message>创建窗口句柄时出错。</Message><StackTrace>   在 System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)

在 System.Windows.Forms.ToolTip.CreateHandle()

在 System.Windows.Forms.ToolTip.get_TopLevelControl()

在 System.Windows.Forms.ToolTip.CreateRegion(Control ctl)

在 System.Windows.Forms.ToolTip.HandleCreated(Object sender, EventArgs eventargs)

在 System.Windows.Forms.Control.OnHandleCreated(EventArgs e)

在 System.Windows.Forms.Control.WmCreate(Message&amp;amp; m)

在 System.Windows.Forms.Control.WndProc(Message&amp;amp; m)

在 System.Windows.Forms.Label.WndProc(Message&amp;amp; m)

在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)

在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)

在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)</StackTrace><ExceptionString>System.ComponentModel.Win32Exception (0x80004005): 创建窗口句柄时出错。

在 System.Windows.Forms.NativeWindow.CreateHandle(CreateParams cp)

在 System.Windows.Forms.ToolTip.CreateHandle()

在 System.Windows.Forms.ToolTip.get_TopLevelControl()

在 System.Windows.Forms.ToolTip.CreateRegion(Control ctl)

在 System.Windows.Forms.ToolTip.HandleCreated(Object sender, EventArgs eventargs)

在 System.Windows.Forms.Control.OnHandleCreated(EventArgs e)

在 System.Windows.Forms.Control.WmCreate(Message&amp;amp; m)

在 System.Windows.Forms.Control.WndProc(Message&amp;amp; m)

在 System.Windows.Forms.Label.WndProc(Message&amp;amp; m)

在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&amp;amp; m)

在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&amp;amp; m)

在 System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)</ExceptionString><NativeErrorCode>486</NativeErrorCode></Exception></TraceRecord>

时间: 2024-10-07 11:43:44

意外发现了winform的一个控件个数的极限的相关文章

[C#]Winform下回车或Tab键自动切换下一个控件焦点

满足用户体验,在数据录入时,能在输入完一个信息后通过回车或Tab键自动的切换到下一个控件(字段). 在界面控件设计时,默认可以通过设置控件的TabIndex来实现.但在布局调整时或者是对输入的内容有选择性时,从用代码的方式来处理显得更好维护一点. 完整的实现方法如下: /// <summary> /// 回车.Tab键盘切换或执行操作 /// </summary> public sealed class TabEnter:IDisposable { private List<

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking&quot;的使用 (二)

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (二) 编写人:CC阿爸 2015-1-29 今天我想与大家继续一起分享这一伟大的控件.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 1.    DockPanel的一点点改进: 在浏览网上的一些技术文章发现,的确有些地方还是可以进一步改进,如当双击Tab时,原先是直接把当前Tab所表示的这个窗体,从主窗体的框架上分离现来,成为一个浮动的窗体.这不是我们想要的,有些同学修改源代码,把它改成了双击关

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking&quot;的使用 (一)

WinForm界面布局控件WeifenLuo.WinFormsUI.Docking"的使用 (一) 编写人:CC阿爸 2015-1-28 在伍华聪的博客中,看到布局控件"WeifenLuo.WinFormsUI.Docking",发现的确是一个非常棒的开源控件,用过的人都深有体会,该控件之强大.美观.不亚于商业控件.而且控件使用也是比较简单的今天在这里,我想与大家一起分这一伟大的控件.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧. 一.引用方法: 1.建立一个WinFo

C#winform中使用控件的Dock属性进行布局

想要实现如下布局,可以通过设置控件的Dock属性达到效果 1.拖放一个panel控件一个label控件(放在panel中)和一个treeView控件到TestForm中 2.设置panel的Dock属性为Top(设置BorderStyle属性为FixedSingle,这样显得美观些),设置treeView的Dock属性为Fill 3.需要注意的是要先把panel放到TestForm中,先放treeView就会使得treeView填充TestForm而被后放置的panel遮盖,如下所示 4.想要实

WinForm 清空界面控件值的小技巧

原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextBox控件比较多的时候,代码里面是不是要设置每个控件的Text属性值为空呢?下面我用这个例子,来探讨下清空界面控件值的小技巧.而且还能复用.不必每个窗体都做这些枯燥.无聊的工作. 一般的做法是在清除控件的事件里面添加下面这样的代码: 代码 private void btnClear_Click(obj

如果一个控件能看见不能处理事件/创建了一个控件看不见

一: 一个控件能看见 但是点击后没有任何反应的原因如下: 1.当前控件的userInteractionEnabled  = NO; 2.如果当前控件继承自UIControl的Enabled = NO 3.当前控件不在父控件的尺寸边框范围 4.当前控件被一个clearColor的控件挡住了 5.检查父控件的前4种情况 如果一个文本输入框能看见但是无法输入文字可能是如下原因: 当前文本输入框没有在主窗口上(ios6中如果文本框没有在主窗口上面 文本输入框的文字无法输入) 二: 如果创建了一个控件 但

Winform中checklistbox控件的常用方法

Winform中checklistbox控件的常用方法最近用到checklistbox控件,在使用其过程中,收集了其相关的代码段1.添加项checkedListBox1.Items.Add("蓝色"); checkedListBox1.Items.Add("红色"); checkedListBox1.Items.Add("黄色"); 2. 判断第i项是否选中,选中为true,否则为falseif(checkedListBox1.GetItemCh

WinForm之中BindingNavigator控件的使用

WinForm之中BindingNavigator控件的使用在微软WinForm中,BindingNavigator控件主要用来绑定数据.可以将一个数据集合与该控件绑定,以进行数据 联动的显示效果.如图下图所示: 那么,下面我们就来用BindingNavigator控件做一下上图所示的效果.分析:该案例以BindingNavigator控件为主线,我们定义一个实体类,将实体类以集合的形式显示在DataGridView中, 同时,将BindingNavigator与DataGridView绑定,将

WinForm窗体及其控件的自适应

3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass(); 2.Form_Load事件中   asc.controllInitializeSize(this); 3.Page_SizeChanged事件中 asc.controlAutoSize(this); AutoSizeFormClass.cs源码如下: class AutoSizeFormCl