首页 > 解决方案 > 使用 SendKeys 在 c# 中发送数据时来自文本框的输出不正确

问题描述

我正在开发一个 winForm 应用程序,它使用 sendkeys 将值发送到不同应用程序(java 应用程序)的文本框。

下面是我的代码

    SendKeys.Send("abcd".ToUpper().Trim());
    Thread.Sleep(50);
    //it will send tab key to focus next textbox
    SendKeys.Send("{TAB}");
    Thread.Sleep(50);
    SendKeys.Send("efgh".ToUpper().Trim());
    //send tab to get focus on button
    SendKeys.Send("{TAB}");
    // it will send key "Enter" for mouse click
    SendKeys.Send("{ENTER}");

但是 sendKeys 正在向文本框发送错误的数据。期望输出应该是abcdtextbox1efghtextbox2。但有时我得到abcdetexbox1fghtextbox2。它合并输入值。有人知道为什么会这样吗?请让我知道如何解决这个问题。

标签: c#winformssendkeys

解决方案


  1. 确保TabIndex属性配置正确。例如应用程序

  2. 单击发送键 按钮 [TabIndex : 0] 我添加了一个选项卡以将焦点导航到下一个[control焦点到TextBox1],form然后执行您想要实现的操作。

    private void btnSendKey_Click(object sender, EventArgs e)
    {
        SendKeys.Send("{TAB}");
        Thread.Sleep(50);
    
        SendKeys.Send("abcd".ToUpper().Trim());
        Thread.Sleep(50);
        //it will send tab key to focus next textbox
        SendKeys.Send("{TAB}");
        Thread.Sleep(50);
        SendKeys.Send("efgh".ToUpper().Trim());
        //send tab to get focus on button
        SendKeys.Send("{TAB}");
        // it will send key "Enter" for mouse click
        SendKeys.Send("{ENTER}");
    }
    

Enter 键上单击仅显示值

    private void btnEnter_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Text Box 1: " + textBox1.Text.ToString() + " - Text Box 2:" + textBox2.Text.ToString());
    }`

推荐阅读