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中的某些列不需要被用戶看到,但稍後會被程序使用。刪除DataGridView列中的意外結果
在最後一行之後,列排列爲: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);
});
}
據我所知,哈里斯哈桑是正確的;包含DataGridView的表單應該至少出現一次。但我仍然感到困惑,爲什麼...
我早些時候做過。我將代碼放在按鈕事件中刪除列的代碼中,當點擊按鈕時這些列被刪除。爲什麼刪除列的時間不在「dataGridView1.DataSource = dt;」之下? –
我不知道細節爲什麼會發生這種情況,但我知道發生了這種情況。你可以做的事情就像處理DataGridView顯示時引發的事件一樣,並在這種情況下刪除列@ –
@Gerald對不起,我真的很困惑......!你是說'RemoveAt'沒有移除列嗎? – NaveenBhat