如何创建一个数组来显示在整个datagridview上进行的点击?

时间:2013-05-21 22:11:45

标签: vb.net datagridview click

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

2 个答案:

答案 0 :(得分:0)

您需要处理DataGridView的{​​{3}}事件,并从其提供的CellClicked参数中提取ColumnIndexRowIndex属性。之后的其余部分应该是创建新行(如果需要)并填充适当值的简单问题。

答案 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

我在两种情况下都使用创建的“记录”作为计数器。如果单独的计数器更方便,它可以在类级别声明并在事件过程中递增。