【问题标题】:sendkeys.send("{RIGHT}") in datagridviewcelldatagridviewcell 中的 sendkeys.send("{RIGHT}")
【发布时间】:2015-07-19 17:56:54
【问题描述】:

我的程序在到达sendkeys.send("{RIGHT}") 时崩溃

在下面的代码中

Private Sub dataGridViewDim_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles DataGridViewDim.MouseUp

        If e.Button = MouseButtons.Left Then
            Dim hit As DataGridView.HitTestInfo = _
                DataGridViewDim.HitTest(e.X, e.Y)
            If hit.Type = DataGridViewHitTestType.Cell Then
                DataGridViewDim.BeginEdit(True)
                SendKeys.Send("{RIGHT}") ' crashes when it gets here
            Else
                DataGridViewDim.EndEdit()
            End If
        End If
    End Sub

如果没有它,它可以完美地用于单击编辑模式。我想把光标一直设置到右边。

【问题讨论】:

  • 我真的不建议将 sendkeys 用于任何事情,因为无法保证将密钥发送到预期的应用程序。例如,如果您有 2 个应用程序碰巧同时使用 sendkeys,那么哪个应用程序获取哪些密钥?如果您想要一种不那么令人担忧的方式,我建议您改用 SendMessage api,作为奖励,您可以向多个应用程序发送多条消息,而不管您的窗口状态、用户活动等如何。
  • 感谢您提供有用的信息。非常感激!作为我的辩护,这是我与他们的第一次尝试,但失败了。哈哈

标签: vb.net datagridview mouseevent sendkeys


【解决方案1】:

作为参考,这是成功的:

If e.Button = MouseButtons.Left Then
    Dim hit As DataGridView.HitTestInfo = _
        DataGridViewDim.HitTest(e.X, e.Y)
    If hit.Type = DataGridViewHitTestType.Cell Then
        DataGridViewDim.BeginEdit(True)
        Dim lengstr As Integer = DataGridViewDim.CurrentCell.Value.ToString.Length
        Dim EditBox = DirectCast(DataGridViewDim.EditingControl, TextBox)
        If IsNothing(EditBox) = False Then EditBox.SelectionStart = lengstr
    Else
        DataGridViewDim.EndEdit()
    End If
End If

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多