Vb.net 设置数据源后无法访问DataGridView列

Vb.net 设置数据源后无法访问DataGridView列,vb.net,winforms,datagridview,Vb.net,Winforms,Datagridview,我有一个奇怪的问题。我通过设置.DataSource属性将datatable绑定到DataGridView,之后我无法访问DataGridView列 Dim dtPML As New DataTable dtPML.Columns.Add("ID_IN_DATASOURCE", Type.GetType("System.String")) dtPML.Columns.Add("SELECTED", Type.GetType("System.Boolean")) dtPML.Columns.Ad

我有一个奇怪的问题。我通过设置
.DataSource
属性将
datatable
绑定到
DataGridView
,之后我无法访问DataGridView列

Dim dtPML As New DataTable

dtPML.Columns.Add("ID_IN_DATASOURCE", Type.GetType("System.String"))
dtPML.Columns.Add("SELECTED", Type.GetType("System.Boolean"))
dtPML.Columns.Add("DESCRIPTION", Type.GetType("System.String"))

grdHorizonPMLRadit.DataSource = dtPML

'next line fails with NullReferenceException
grdHorizonPMLRadit.Columns("ID_IN_DATASOURCE").Visible = False  
当检查
grdHorizonPMLRadit.Columns.Count时,它显示零列,尽管
CType(grdHorizonPMLRadit.DataSource,DataTable).Columns.Count返回3

为什么
DataGridView
没有从
Datatable
生成列

.AutoGenerateColumns
属性设置为true。它是在另一个线程中完成的还是仅在绘制网格时完成的?若我只是设置Datasource,在表单完全加载之前不接触.Columns集合,那个么列是可访问的

奇怪的是,我以前做过这个,效果很好。我最近切换到Visual Studio 2013,在
Datagridview
数据处理方面是否有一些变化?
提前谢谢。

是的,你注意到的行为是正常的。尽管设置了
DataSource
属性,但在显示网格之前,
DatagridView
不会创建列

尝试在事件中移动这行代码,以确保创建了列:

grdHorizonPMLRadit.Columns("ID_IN_DATASOURCE").Visible = False