将LeftClick事件发送到文本框

时间:2012-11-29 17:48:27

标签: c# winforms textbox

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

2 个答案:

答案 0 :(得分: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位置发送鼠标左键单击。

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

答案 1 :(得分:0)

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