将DataGridView.RowCount设置为NumericUpDown.Value会添加额外的列

时间:2014-12-16 19:41:46

标签: vb.net datagridview datagridviewcolumn

所以我有一个表格,我有一个NumericUpDown控件(我将它称为我的数字选择器)和一个DataGridView(我将它称为我的网格)。我的网格目前尚未绑定,我在设计中手动添加了列,当我运行表单时,它一切都很好。所以在代码中我添加了这个方法:

Private Sub numPicker_ValueChanged(sender As Object, e As EventArgs) Handles numPicker.ValueChanged
    DataGridView.RowCount = CInt(numPicker.Value)
End Sub

有了这个,在运行时我的网格前面有一个额外的无标题列。如果我注释掉作业,则没有额外的栏目......如果我取消注释,则会有一个额外的栏目。

我有另一种形式有类似的设置,无论出于什么原因,表单都很好......没有添加额外的列。所以我只是不知道为什么一个表单会在我的网格中添加一列而另一个表格也不会......我也不知道如何处理它。

有什么想法吗?

注意:澄清:MSDN关于RowCount属性的文章(http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowcount%28v=vs.110%29.aspx)指出"如果为没有列的DataGridView控件将RowCount属性设置为大于0的值,则为DataGridViewTextBoxColumn自动添加。"但我已经有了专栏。在加载形式I中,将行数设置为1(数字选择器的值也为1)。当该分配行被注释掉时,我的表单在网格中加载了1行而没有额外的列。

1 个答案:

答案 0 :(得分:3)

ValueChanged()事件正在触发,然后在完全初始化DataGridView之前更改行数。

在那里添加支票,额外的专栏应该消失:

Private Sub numPicker_ValueChanged(sender As Object, e As EventArgs) Handles numPicker.ValueChanged
    If DataGridView.IsHandleCreated Then
        DataGridView.RowCount = CInt(numPicker.Value)
    End If
End Sub