我有一個gridview,我可以通過按下一個控制鍵來選擇多行。無需按下控制鍵,是否可以達到相同的效果?不按控制鍵可以選擇多個行
回答
作爲.NET默認的動作也將更新的slectedrows
你datagridview
你需要有一個數組來保留舊的選擇:
DataGridViewRow[] old;
將在CellMouseDown
(更新默認.NET行動之前修改您的選擇):
private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
old = new DataGridViewRow[dataGridView1.SelectedRows.Count];
dataGridView1.SelectedRows.CopyTo(old,0);
}
在這之後,你可以做你的變化(如RowHeaderSelect
是默認的datagridview selectionmode
)或FullRowSelect
使用CellMouseClick
並重新選擇那些老所選行:
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
foreach (DataGridViewRow gr in old)
{
if (gr == dataGridView1.CurrentRow)
{
gr.Selected = false;
}
else
{
gr.Selected = true;
}
}
}
編輯:更好的解決方案:
你需要實現自己的datagridview
從原來的一個派生並重寫OnCellMouseDown
& OnCellMouseClick
取消默認取消選擇操作並使其平滑。創建一個新類的東西是這樣的:
Using System;
Using System.Windows.Forms;
public class myDataGridView:DataGridView
{
protected override void OnCellMouseDown(DataGridViewCellMouseEventArgs e)
{
//base.OnCellMouseDown(e);
this.Rows[e.RowIndex].Selected = !this.Rows[e.RowIndex].Selected;
}
protected override void OnCellMouseClick(DataGridViewCellMouseEventArgs e)
{
//base.OnCellMouseClick(e);
}
}
,並在您Form.Designer.cs改變DataGridView
對象datagridview1
(如果是這樣的名稱)myDataGridView
對象......
例如:更改
private System.Windows.Forms.DataGridView dataGridView1;
到
private myDataGridView dataGridView1;
,改變
this.dataGridView1=new System.Windows.Forms.DataGridView()
到
this.dataGridView1=new myDataGridView()
您需要訂閱鼠標單擊事件並通過將Selected屬性設置爲true以編程方式選擇行。
請記住,如果行已被選中,您需要將其設置爲false,以便用戶能夠取消選擇該行。
我從來沒有這樣做過,但應該可以使用MouseDown和MouseUp事件來選擇當按住其中一個按鈕時移動鼠標時在光標下的任何行。
了最簡單的方法可以把一個複選框,每一行和可能的「全選」複選框上的頭英寸
我不得不爲觸摸屏做到這一點,我想單擊一下多選,而不會看到難看的複選框。 爲什麼在它複雜化,只是保持不的Index'es
private List<int> SelectedIndexs { get; set; }
然後根據需要添加或單擊它們從列表中刪除它們...... 然後看通過你的DataGrid,並在列表中選擇行。
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (SelectedIndexs.Contains(e.RowIndex))
{
SelectedIndexs.Remove(e.RowIndex);
}
else
{
SelectedIndexs.Add(e.RowIndex);
}
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
row.Selected = SelectedIndexs.Contains(row.Index);
}
}
- 1. 按Tab鍵不會選擇下一個控制|可可
- 2. 多行選擇不按控制鍵在ag網格
- 3. 使用Shift鍵和控制鍵選擇多個錶行不工作
- 4. MySQL按鍵選擇行或回退以默認選擇鍵
- 5. 選擇/取消選擇多選選擇框的不按控制鍵和改變風格
- 6. 選擇控制和TAB鍵
- 7. 多項選擇,按CTRL鍵
- 8. 我們可以按行選擇HTML控件中的每個選項嗎?
- 9. 按下Ctrl鍵不能選擇多行。描述我的方法
- 10. SQL查詢可按日期選擇最多一個有效行w.r.t.外鍵
- 11. wpf datagrid行選擇控制
- 12. 我需要一個多選下拉菜單而不按控制鍵?
- 13. 在不按住鍵的情況下選擇多個QGraphicsItems
- 14. MySQL選擇多個外鍵
- 15. BigQuery選擇多個鍵值
- 16. 如何在extjs 3 checkboxselectionmodel多行選擇shift鍵同時保持默認的控制功能可以做到?
- 17. 單選按鈕不工作(可同時選擇多個單選按鈕)
- 18. AS3鍵盤控制角色 - 動畫問題與多個按鍵
- 19. 按回車鍵不選擇複選框
- 20. pass選項選擇值以控制
- 21. 在NetBeans IDE中,是否有一個組合鍵可選擇多行或多行?
- 22. 製作按鈕可在不可選列表框中選擇
- 23. 選擇2:控制多少選項,以顯示
- 24. 單選按鈕既可以選擇
- 25. 窗體多個複選框,有多少可以選擇的限制
- 26. 按ENTER鍵在datagridview中選擇一行
- 27. Azure Table Storage按行鍵性能選擇
- 28. HTML表格,選擇行通過按鍵
- 29. 版本控制;選擇,選擇,選擇!
- 30. 在WPF中配置列表框,這樣我就可以選擇多個項目而不用按住CTRL鍵
如果您選擇多個行而沒有控制鍵,您將如何取消選擇它們? – Giorgi 2010-10-12 14:33:21
@Giorgi再次單擊一行 – Bolu 2010-10-12 14:38:35