【发布时间】:2011-08-12 15:30:37
【问题描述】:
DataTable dt = new DataTable();
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
dt.Columns.Add("col4");
dt.Columns.Add("col5");
dataGridView1.DataSource = dt;
dataGridView1.Columns.RemoveAt(3);
dataGridView1.Columns.RemoveAt(2);
dataGridView1.Columns.RemoveAt(0);
在这个程序中,我创建了一个包含 5 列的 DataTable。这将是 DataGridView 的 DataSource。 DataTable 中的某些列不需要用户看到,但稍后会被程序使用。
在最后一行之后,列排列为:col2、col5、col1、col3、col4。为什么会出现这样的情况?它不应该从 DataGridView 中删除吗?我应该怎么做才能让它显示为“col2,col5”?
编辑:我想从 DataGridView 中删除一些列,但仍可在 DataTable 中使用。此外,它在事件中工作(如 Button_Click)
编辑:我仍然还没有弄清楚为什么会这样。我别无选择,只能创建另一个线程(BackgroundWorker)来执行此操作...
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
DataTable dt = new DataTable();
int i;
dataGridView1.Invoke((MethodInvoker)delegate
{
dt.Columns.Add("col1");
dt.Columns.Add("col2");
dt.Columns.Add("col3");
dt.Columns.Add("col4");
dt.Columns.Add("col5");
dataGridView1.DataSource = dt;
dataGridView1.Columns.RemoveAt(3);
dataGridView1.Columns.RemoveAt(2);
dataGridView1.Columns.RemoveAt(0);
});
}
据我所知,Haris Hasan 是对的;包含 DataGridView 的表单应至少出现一次。但我仍然很困惑为什么......
【问题讨论】:
标签: c#