引发类型为“System.ComponentModel.Design.ExceptionCollection”的异常:设计器加载程序未提供根组件,但没有指出原因。
环境:Windows XP,VS 2005 SP1,.NET FX 2.0 SP1
问题:
引发类型为“System.ComponentModel.Design.ExceptionCollection”的异常
设计器加载程序未提供根组件,但没有指出原因。
描述:
添加了WinForm 程序中添加了DataGridView,做了
列替换操作(列中动态绑定枚举对象),这个列替换操作在后台CS代码中,
不是在Designer.cs 中。
解决办法:
把自动生成的DataGridView列和要替换的列生成方法封装在一个方法中,例如:
Code
public void InitGridView()
{
DataGridViewTextBoxColumn downloadTimeDataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
// 其他列
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();
}
这样,上面的错误自然消失,设计时正常了。