代码之家  ›  专栏  ›  技术社区  ›  deostroll

动态创建的datagridview列不可访问,除非添加到窗体中…为什么?

  •  2
  • deostroll  · 技术社区  · 14 年前

    引发错误的代码:

    DataGridView gv = new DataGridView();
    gv.DataSource = GetDataTable(); //binding it to datatable
    Debug.Assert(gv.Columns == null);
    

    DataGridView gv = new DataGridView();
    gv.DataSource = GetDataTable(); //binding it to datatable
    this.Controls.Add(gv); //adding to form
    Debug.Assert(gv.Columns == null); //the assertion fails!
    

    为什么这种行为如此?有解决办法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Drake    14 年前

    我有一个类似的问题,但我不确定它是否能帮助你。

    可以将处理程序附加到 DataGridView.DataBindingComplete 事件。

    DataGridView 如果将引发该事件,则在主线程中显示,并在那里创建和访问所有列

        2
  •  0
  •   Reddog    14 年前

    AutoGenerateColumns 属性需要 BindingContext 正确生成和管理单元格值的绑定。通常,在设置父控件之前,无法确定BindingContext。