问题:
引发类型为“System.ComponentModel.Design.ExceptionCollection”的异常
设计器加载程序未提供根组件,但没有指出原因。
![](https://images.cnblogs.com/cnblogs_com/winzheng/DesignerException.jpg)
描述:
添加了WinForm 程序中添加了DataGridView,做了 列替换操作(列中动态绑定枚举对象),这个列替换操作在后台CS代码中,
不是在Designer.cs 中。
解决办法:
把自动生成的DataGridView列和要替换的列生成方法封装在一个方法中,例如:
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
public void InitGridView()
{
DataGridViewTextBoxColumn downloadTimeDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
// 其他列
![](https://www.cnblogs.com/Images/dot.gif)
DataGridViewComboBoxColumn downloadTypeDataGridViewTextBoxColumn = DataLoglist.CreateComboBoxLogType();
dataGridView1.Columns.Clear();
dataGridView1.AutoGenerateColumns = false;
//
// downloadTimeDataGridViewTextBoxColumn
//
downloadTimeDataGridViewTextBoxColumn.DataPropertyName = "DownloadTime";
downloadTimeDataGridViewTextBoxColumn.HeaderText = "下发时间";
downloadTimeDataGridViewTextBoxColumn.Name = "downloadTimeDataGridViewTextBoxColumn";
downloadTimeDataGridViewTextBoxColumn.ReadOnly = true;
//
// downloadTypeDataGridViewTextBoxColumn
//
downloadTypeDataGridViewTextBoxColumn.DataPropertyName = "DownloadType";
downloadTypeDataGridViewTextBoxColumn.HeaderText = "下发类型";
this.dataGridView1.Columns.AddRange(new DataGridViewColumn[] {
downloadTimeDataGridViewTextBoxColumn,
deviceIPDataGridViewTextBoxColumn,
deviceNameDataGridViewTextBoxColumn,
inOutDataGridViewTextBoxColumn,
workerNameDataGridViewTextBoxColumn,
iDCardDataGridViewTextBoxColumn,
workerFingerIdDataGridViewTextBoxColumn,
downloadTypeDataGridViewTextBoxColumn,
downloadResultDataGridViewTextBoxColumn,
memoDataGridViewTextBoxColumn});
}
public
ShowWokerInfo()
{
InitializeComponent();
InitGridView();
}
{
InitializeComponent();
InitGridView();
}
这样,上面的错误自然消失,设计时正常了。
态度决定一切,技术改变生活作者:winzheng
出处: http://cnblogs.com/winzheng
本文为原创作品,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。