C# 无法添加列,因为其CellType属性为null异常

C# 无法添加列,因为其CellType属性为null异常,c#,datagridview,C#,Datagridview,下面的代码有问题。当我使用调试器时,当涉及到以下行时,会出现异常: dgvCalls.Columns.Insert(1, msisnnColumn); 我得到一个例外: 无法添加列,因为其 CellType属性为空 奇怪的是,我为其他一些DataGridView创建了相同的过程,效果很好 if (!(dgvCalls.Columns.Contains("DirectionImage"))) { directionIconC

下面的代码有问题。当我使用调试器时,当涉及到以下行时,会出现异常:

dgvCalls.Columns.Insert(1, msisnnColumn);
我得到一个例外:

无法添加列,因为其 CellType属性为空

奇怪的是,我为其他一些DataGridView创建了相同的过程,效果很好

if (!(dgvCalls.Columns.Contains("DirectionImage")))
                {
                    directionIconColumn = new DataGridViewImageColumn();
                    directionIconColumn.Name = "DirectionImage";
                    directionIconColumn.HeaderText = "";
                    dgvCalls.Columns.Insert(0, directionIconColumn);
                    directionIconColumn.CellTemplate = new DataGridViewImageCell();
                }
                if (!(dgvCalls.Columns.Contains("msisndColumn")))
                {
                    msisnnColumn = new DataGridViewColumn();
                    msisnnColumn.Name = "msisndColumn";
                    msisnnColumn.HeaderText = "Klic";
                    dgvCalls.Columns.Insert(1, msisnnColumn);
                    msisnnColumn.CellTemplate = new DataGridViewTextBoxCell();
                }
有什么建议吗

dgvCalls.Columns.Insert(1, msisnnColumn);
msisnnColumn.CellTemplate = new DataGridViewTextBoxCell();

试着把这两行翻过来。这可能会奏效。

您可以突出显示代码并单击编辑文本区域正上方的0101010小图标,以更易于阅读的格式显示代码。谢谢!它起作用了。我想知道为什么它在顺序不同的其他形式下工作!问题是,由于您只是将msisnnColumn分配给一个新的DataGridViewColumn(),它不知道您想要什么单元格类型,所以它只将其保留为null。因此,当你去做插入时,它爆炸了。但是,如果您首先将CellTemplate分配给TextBoxCell,它就会知道您想要什么。