Ero*_*ocM 4 vb.net datagridview edit click
我有一个datagridview,我已经打开了ContextMenuStrip1.我想在右键单击行时删除datagridview中的一行,然后单击"删除行".我有删除工作,菜单显示,但是当您右键单击datagridview时,这不会触发.
这是我设置要编辑的行的位置:
Private Sub ModifyRowToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ModifyRowToolStripMenuItem.Click
If Not datagridview_TagAssignment.CurrentRow Is Nothing Then
datagridview_TagAssignment.CurrentCell = datagridview_TagAssignment.Item(0, datagridview_TagAssignment.CurrentRow.Index)
datagridview_TagAssignment.BeginEdit(True)
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
我总是以行(0)结束,而不是我右键单击的行.
Private Sub datagridview_TagAssignment_CellMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles datagridview_TagAssignment.CellMouseClick
If e.Button = Windows.Forms.MouseButtons.Right AndAlso e.RowIndex >= 0 Then
datagridview_TagAssignment.Rows(e.RowIndex).Selected = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
有人有什么建议吗?
Private Sub DataGridView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseClick
If e.Button = Windows.Forms.MouseButtons.Right Then
rowClicked = DataGridView1.HitTest(e.Location.X, e.Location.Y).RowIndex
ContextMenuStrip1.Items.Add(rowClicked.ToString)
ContextMenuStrip1.Show(DataGridView1, e.Location)
ContextMenuStrip1.Items.Clear()
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
编辑:已更新以处理上下文菜单条.
这应该为您提供使用鼠标坐标右键单击的行的行索引.哪个应该让你基于知道索引删除行.
编辑
根据你对它的评论不起作用,这是我的代码
我有一个WinForm的解决方案,添加了一个dataGridView.这是表单中的代码.
Public Class Form1
Dim bindS As New BindingSource
Dim rowClicked As Integer
Private Sub DataGridView1_MouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseClick
If e.Button = Windows.Forms.MouseButtons.Right Then
rowClicked = DataGridView1.HitTest(e.Location.X, e.Location.Y).RowIndex
ContextMenuStrip1.Items.Add(rowClicked.ToString)
ContextMenuStrip1.Show(DataGridView1, e.Location)
ContextMenuStrip1.Items.Clear()
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim s As New List(Of String)
s.Add("String one")
s.Add("String Two")
bindS.DataSource = s
DataGridView1.DataSource = bindS
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
右键单击一行显示正确的行索引
确保您正在处理的事件args是System.Windows.Forms.MouseEventArgs我注意到您正在处理单元格单击
| 归档时间: |
|
| 查看次数: |
23972 次 |
| 最近记录: |