如何让虚拟键盘在 WinForms 应用程序的文本框中输入文本?

Posted

技术标签:

【中文标题】如何让虚拟键盘在 WinForms 应用程序的文本框中输入文本?【英文标题】:How do I make the virtual keyboard enter text into a textbox in WinForms application? 【发布时间】:2014-02-03 20:16:30 【问题描述】:

我有一个包含按钮和文本框的 Windows 窗体应用程序。在“button_click_event”处执行此代码:

System.Diagnostics.Process.Start("osk.exe");

键盘显示,但当我在所述键盘上键入时,文本框中没有出现任何文本。

【问题讨论】:

确保文本框聚焦,然后切换到键盘并输入内容。 【参考方案1】:

发生的情况是屏幕键盘正在向焦点控件发送信息,在您的情况下,焦点控件是启动键盘的按钮。创建键盘后尝试将焦点设置到您的文本框。

private void button1_Click(object sender, EventArgs e)

    System.Diagnostics.Process.Start("osk.exe");
    //SetFocus to your TextBox here
    textBox1.Focus();

要关闭它,请执行以下操作

private void button2_Click(object sender, EventArgs e)

    var procs = Process.GetProcessesByName("osk");
    if (procs.Length != 0)
        procs[0].Kill();


【讨论】:

是的..这工作正常,先生,但我有一个疑问,这个命令(System.Diagnostics.Process.Start(“osk.exe”);实际上启用了虚拟键盘? @user3252014 这是运行屏幕键盘所需的操作。键盘是一个外部应用程序,因此您需要使用 Process.Start 来运行它。 @user3252014 代码中没有可编辑的内容,虚拟键盘将其数据发送到当时的焦点。我提供的代码将起作用并回答您的问题。 先生,我怎样才能关闭这个键盘 您可以使用键盘上的关闭按钮,也可以终止您启动的进程,我会将后者的代码放在我的答案中。我真的想知道你是否会问这个。

以上是关于如何让虚拟键盘在 WinForms 应用程序的文本框中输入文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何拦截所有键盘事件并防止在 WinForms 应用程序中失去焦点?

WinForms 中的 C# 虚拟列表视图

虚拟键盘弹出文本字段的焦点

安卓虚拟键盘怎么调出来

如何防止在WinForms TextBox中按下alt键引起的哔声?

如何显示被虚拟键盘隐藏的文本字段?