使用右键单击在datagridview单元格文本中放置光标(用于编辑)

时间:2015-04-30 08:38:33

标签: vb.net datagridview

我试图拼凑vb.net代码,允许用户右键单击datagridview,然后将光标(或者它是插入符?)放入单元格的文本中。 我已经可以使用

获取行和单元格了
 Dim hti As DataGridView.HitTestInfo = sender.HitTest(e.X, e.Y)

并单击鼠标右键单击

If e.Button = Windows.Forms.MouseButtons.Right Then

我也有使用

右键单击用户的位置
Dim pt As Point = Me.PointToClient(Control.MousePosition)

我想避开的是如何将它们放在一起以将光标放在用户右键单击的位置。

我不想要的是将光标放在任何地方的单元格中,我需要将光标放入用户右键单击单元格中的单元格文本(如果有的话)。

代码的要点是允许用户根据右键菜单中的选择将一些文本放入单击位置的单元格中。感谢任何有用的建议。

亲切的问候 迈克尔

1 个答案:

答案 0 :(得分:1)

这样的事可能......应该运作得相当好。

DataGridView CellMouseDown事件处理程序中:

    If e.Button = MouseButtons.Right Then
        'Get coordinates within cell
        _point = New Point(e.X, e.Y)
        'we are going to handle setting the edit state of the cell
        _handleEdit = True
        'Set current cell to the one we right clicked in (this will trigger the CellEnter event)
        dataGridView1.CurrentCell = dataGridView1(e.ColumnIndex, e.RowIndex)
    End If

DataGridView CellEnter事件处理程序中:

If _handleEdit Then
    'enter edit state
    dataGridView1.BeginEdit(False)
    'set the seletionstart property based on position
    CType(dataGridView1.EditingControl, TextBox).SelectionStart = CType(dataGridView1.EditingControl, TextBox).GetCharIndexFromPosition(_point)
    'Done handling the edit state
    _handleEdit = False
End If