2016-02-12 39 views
0

我有一個名爲datagridview1的datagridview包含ms sql的表格。我想選擇一個單元格,然後選擇另一個單元格而不取消選擇我之前選擇的第一個單元格。我怎樣才能做到這一點?使用vb.net在Datagridview中選擇單元格

我想這個代碼沒有任何選擇:

Private Sub DataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick 
    If DataGridView1.CurrentCell.Selected = True Then 
     DataGridView1.CurrentCell.Selected = False 
    Else 
     DataGridView1.CurrentCell.Selected = True 
    End If 

End Sub 

有什麼建議?

+0

其他的點是什麼?您將當前單元格的Selected屬性設置爲它已有的相同值。目前尚不清楚你在這裏做什麼。 –

+0

我想取消選擇單元格是否已被選中。單擊選定的單元格應取消選擇它。但是,無論何時選中一個單元格,其他單元格都應該保持選中狀態。 – Macukadam

+0

爲什麼不使用窗口中標準的Ctrl鍵作爲多選單元。 –

回答

0

我想你可以推出自己的datagridview,並重寫OnCellMouseDown和OnCellMouseUp事件,爲您提供這種效果,而不需要鼠標取消當前選定的項目。

在解決方案中創建一個新的類,並繼承DataGridView的

Public Class MyDataGridView 
    Inherits DataGridView 

    Protected Overrides Sub OnCellMouseDown(e As DataGridViewCellMouseEventArgs) 
     Me.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected = Not Me.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected 
    End Sub 

    Protected Overrides Sub OnCellMouseUp(e As DataGridViewCellMouseEventArgs) 
    End Sub 
End Class 

這應該抵消發生了什麼,當鼠標點擊事件過程中充分其中在標準單元,將取消先前的選擇(除非CTRL鍵被使用)。

添加此代碼,編譯它,你應該在你的工具箱的頂部看到一個MyDataGridView控件。將它拖到您的表單上,填充它,然後放開它。

+0

謝謝..這就是我一直在尋找! – Macukadam

+0

無法加載工具箱項目'MyDataGridView'。它將從工具箱中刪除。試圖將MyDataGridView控件拖到我的表單時出現此錯誤。 – Macukadam

+0

我對錯誤做了一個快速搜索,發現這個[其他SO主題](http://stackoverflow.com/questions/4800388/cannot-place-user-control-on-form)。您可能會看到這是否適用於您的應用程序。 –

相關問題