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