我在窗體中有一個DataGridView。功能如下。如何在DataGridView中選擇多個單元格
- 單擊標題選擇整個列。
- 點擊比列標題之外的任何細胞選擇整個行
我已多選設置爲true。我可以通過使用鼠標來選擇多個單元格。但我想以編程方式進行。
我在窗體中有一個DataGridView。功能如下。如何在DataGridView中選擇多個單元格
我已多選設置爲true。我可以通過使用鼠標來選擇多個單元格。但我想以編程方式進行。
如果您有多項選擇真正爲您DataGridView
,那麼你可以通過電網和設置所需的行作爲Selected
環(還您dataGridView.SelectionMode
應該是FullRowSelect
)
dataGridView.Rows[0].Selected = true;//determine index value from your logic
dataGridView.Rows[5].Selected = true;
編輯
而不是行選擇,那麼你可以嘗試這個邏輯,訂閱rowheaderclick事件,其中你會得到它被點擊的行索引,現在循環遍歷列並設置每個單元格被選中(與上面類似)
對於HeaderClick事件,您可以使用列索引的相同方式,現在循環行並設置選定的行索引。
datagridview1[columnindex, rowindex].Selected = true
對於行rowindex將被固定,而對於列選擇columnindex將是固定的。
希望這可以幫助你。
在嘗試選擇(多個)項目之前,允許DataGridView完成加載其數據非常重要。您可以在DataBindingComplete事件處理程序中執行此操作。 下面是一個工作示例:
List<int> items = new List<int>() { 2, 4 };
private void dataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
dataGridView1.ClearSelection();
int lastItem = 0; // Save the last match to scroll to it later
bool cellSelected = false;
for (int i = dataGridView1.Rows.Count - 1; i >= 0; i--)
{
if (items.Contains((int)dataGridView1.Rows[i].Cells[0].Value))
{
lastItem = i;
dataGridView1.Rows[i].Selected = true;
if (!cellSelected) // gotta select only one cell
{
dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];
cellSelected = true;
}
}
}
dataGridView1.FirstDisplayedScrollingRowIndex = lastItem;
}
感謝您的回覆。但上述方法不能解決問題,因爲我必須單擊列標題來選擇整個列。如果SelectionMode設置爲「FullRowSelect」 – Bimal
檢查我的編輯這應該與CellSelect模式工作 – V4Vendetta
這工作。謝謝 – Bimal