微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c#winforms怎么看文字的写法

如何解决c#winforms怎么看文字的写法

我正在使用下面的代码,它应该一个字母一个字母地写我发送的字符串,但是当它开始写时,它确实阻止了应用程序,然后向我展示了它写的我可以做什么

simulator.Keyboard.TextEntry("pruebva").Sleep(typingDelay);

应用程序崩溃,然后您会看到已写入的文本,就像我在写入每个字符时看到的一样

https://ourcodeworld.co/articulos/leer/520/simulando-eventos-keypress-de-la-manera-correcta-usando-inputsimulator-con-c-en-winforms

 private async void Start_Click(object sender,EventArgs e)
        {
            
            var simulator = new InputSimulator();
            int typingDelay = 100;


            Cursor.Position = pictureBox1.PointToScreen(new Point(171,80));

            simulator.Mouse.LeftButtonClick();
            Thread.Sleep(5000);
            simulator.Keyboard.TextEntry("id-cellphone");
            simulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);

            //enviar
            Cursor.Position = pictureBox1.PointToScreen(new Point(585,577));
            simulator.Mouse.LeftButtonClick();



            simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[2].Value.ToString());
            simulator.Keyboard.TextEntry("probe_text").Sleep(typingDelay);
            simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
            simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[7].Value.ToString());
            simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
            simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[5].Value.ToString());
            simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);

            simulator.Keyboard.KeyPress(VirtualKeyCode.RETURN);

            dataGridView1.Rows.RemoveAt(dataGridView1.CurrentRow.Index);
          

感谢它起作用了

simulator.Keyboard.TextEntry(dataGridView1.Rows[0].Cells[2].Value.ToString());
            await Task.Delay(1000);
            simulator.Keyboard.TextEntry("pruebva").Sleep(typingDelay);
            await Task.Delay(1000);
            simulator.Keyboard.KeyPress(VirtualKeyCode.SPACE);
            await Task.Delay(1000);

我终于看到你写的文字了,非常感谢

解决方法

应用程序不会崩溃。当程序停止处理操作系统消息 5 秒钟时,Windows 将报告程序没有响应。猜猜当你执行 Thread.Sleep(5000) 时会发生什么。是的,五秒钟的“什么都不做”就在那里。它阻止了 UI 线程处理消息。

请像这样使用 Task.Delayawait Task.Delay(5000);。是的,事件处理程序可以是异步的。

另见:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。