-1

有什么办法可以将左键单击事件发送到TextBox?出于什么原因,虽然我正在做 aTextBox.Focus()并且光标在里面闪烁,TextBox但我无法开始输入,但是如果我在文本框中用鼠标额外单击,那么我可以开始输入。所以,我想知道如何将该事件发送给它?

4

2 回答 2

1

要发送鼠标事件,您需要导入user32.dll并使用mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

例子

class Mouse
{
    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);

    private const int MOUSEEVENTF_LEFTDOWN = 0x02; //Left click
    private const int MOUSEEVENTF_LEFTUP = 0x04;
    private const int MOUSEEVENTF_RIGHTDOWN = 0x08; //Right click
    private const int MOUSEEVENTF_RIGHTUP = 0x10;

    public static void sendMouseRightclick(Point p)
    {
        mouse_event(MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, p.X, p.Y, 0, 0); //Sends a mouse right click at the specified Point
    }
    public static void sendMouseClick(Point p)
    {
        mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, p.X, p.Y, 0, 0); //Sends a mouse left click at the specified Point
    }
}

使用此功能时,您可以调用Mouse.sendMouseClick(Point p)以在指定点发送鼠标左键单击。

在您的情况下,我认为您可能希望使用Mouse.sendMouseClick(TextBox.Location);鼠标左键单击当前TextBox位置。

谢谢,
祝你有美好的一天:)

于 2012-11-29T23:10:37.697 回答
0

好的,首先要解决这个问题,我们应该确保表单本身已激活。为此,在 Form_Shown 事件中,我们应该调用 this.Activate()

于 2012-11-29T22:02:36.940 回答