pourpose是构建一个3xn数组(3列,n行),显示/枚举在整个数据视图中进行的点击。
3列Column1:点击次数,首先点击整个datagridview。 Column2:整个datagridview点击的e.columnindex。第3列:数据网格视图点击的e.rowindex。
n行:第1行:与第一次点击相关的信息遍及dgv,即:(1,3,7)(点击1,点击3的columnindex,点击7的rowindex)....行N;通过dgv点击的总点击次数。
这是我的最佳代码:
Private Accums As New ArrayList
Private Sub ClickMouse(sender As Object, e As DataGridViewCellMouseEventArgs) Handles datagridview.CellMouseClick
Accums.Add(New Integer() {e.Clicks, e.ColumnIndex, e.RowIndex})
End Sub
答案 0 :(得分:0)
您需要处理DataGridView
的{{3}}事件,并从其提供的CellClicked参数中提取ColumnIndex
和RowIndex
属性。之后的其余部分应该是创建新行(如果需要)并填充适当值的简单问题。
答案 1 :(得分:0)
这应该根据需要创建结构(如果没有错误:D):
Dim ClikAr(2,-1) As Integer '-1 is described in MSDN. I have never tried it.
Private Sub ClickMouse(sender As Object, e As DataGridViewCellMouseEventArgs) Handles datagridview.CellMouseClick
Dim ClickNum As Integer = Ubound(ClickAr,2)+1
Redim Preserve ClickAr(2,ClickNum)
ClickAr(0,ClickNum) = ClickNum
ClickAr(1,ClickNum) = e.ColumnIndex
ClickAr(2,ClickNum) = e.RowIndex
'e.Clicks can be used to distinguish Double Clicks.
End Sub
此解决方案的问题是,在每次点击时,将重新创建数组并将值复制到其中,这不是非常有效。您可以事先创建一个大型数组,但这也不是很有效。我认为最初的解决方案更好。我已经修改了稍微接近所需的结构但是数组中的第一项不是必需的,因为它是索引或ArrayList
Private Accums As New ArrayList
Private Sub ClickMouse(sender As Object, e As DataGridViewCellMouseEventArgs) Handles datagridview.CellMouseClick
Accums.Add(New Integer() {Accums.Count, e.ColumnIndex, e.RowIndex})
End Sub
我在两种情况下都使用创建的“记录”作为计数器。如果单独的计数器更方便,它可以在类级别声明并在事件过程中递增。