【问题标题】:Sending a LeftClick event to a Text Box向文本框发送 LeftClick 事件
【发布时间】:2012-11-29 17:48:27
【问题描述】:

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

【问题讨论】:

  • 如 [此处][1] 发布的,使用 .select() 代替 [1]:stackoverflow.com/questions/4594194/…
  • 如 [此处][1] 发布的,请使用 .select() 代替 [1]:stackoverflow.com/questions/4594194/…
  • @ValentijnSpruyt:输入评论时点击“帮助”,您将看到如何做链接 ;-)
  • 修复激活问题,而不是贴上创可贴。
  • @BDotA - 我记得几年前在 Citrix 应用程序中遇到过这个问题。我不记得我们是否修复了它,但它基于 Citrix 的事实是问题的一个非常重要的部分。如果这不能解决问题,您可能应该在此基础上进行编辑或重新询问。

标签: c# winforms textbox


【解决方案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 位置发送鼠标左键单击。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      • 2014-05-19
      • 1970-01-01
      相关资源
      最近更新 更多