2015-07-18 145 views
0

我的程序崩溃当它到达sendkeys.send("{RIGHT}")sendkeys.send( “{RIGHT}”)中的DataGridViewCell

在下面的代码

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 

没有它完全适用于单一的点击编辑模式。我想将cursosr设置在最右边。

+0

我不建议使用任何真正的SendKeys,因为没有一个坚如磐石保证该密钥将被发送到目标应用。例如,如果您有两个应用程序碰巧同时使用了sendkeys,哪个应用程序获取了哪些键?如果你想要这样做的少一些令人担忧的方式,我建议使用SendMessage api,作为奖励,您可以发送多个消息到多个应用程序,无论您的windowstate,用户活动等。 –

+0

感谢您提供有用的信息。非常感激!作为我的防守,这是我第一次尝试与他们并且失败。嘿 – Claudius

回答

0

仅供参考这并获得成功:

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