设置datagridview中的单元格值不能在表单加载中工作

时间:2013-08-30 06:43:28

标签: vb.net winforms datagridview form-load

这是我在datagridview单元格中设置值的代码:

For i = 0 To dvJOBranch.Rows.Count - 1
        dvJOBranch.Rows(i).Cells.Item("XS").Value = 0
        dvJOBranch.Rows(i).Cells.Item("S").Value = 0
        dvJOBranch.Rows(i).Cells.Item("M").Value = 0
        dvJOBranch.Rows(i).Cells.Item("L").Value = 0
        dvJOBranch.Rows(i).Cells.Item("XL").Value = 0
Next

它在按钮事件中工作,显示表单事件,但不是表单加载,并且没有错误。

我的问题是为什么它在表单加载中不起作用?

1 个答案:

答案 0 :(得分:3)

我的猜测是您正在使用DataGridView.AutoGenerateColumns功能,即使您设置了DataSource属性,DatagridView也不会创建列,直到显示网格。

它可以解释为什么它不能在formload中工作(网格尚未初始化)并且它可以用于(例如显示事件)。

所以有可能:

  • 您尝试访问尚不存在的项目(但代码应引发异常)
  • 或者您访问有效的行或列,但是当第一次显示网格或再次绑定到数据源时它们会被替换,因此您的代码无效(可能是您的情况,因为您没有提及异常) 。

使用form_shown可能是一种可能的解决方法,但我建议您使用DataGridView.DataBindingComplete事件,该事件更专门用于处理这种情况。

另见这些相关问题(原因相同):