WinForms屏幕上的键盘

时间:2012-02-15 17:49:11

标签: c# winforms keyboard touchscreen

我开发了一个用于触摸屏计算机的Windows窗体应用程序。当用户点击输入框(文本框)时,是否可以显示键盘?我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

您是否知道Windows有屏幕键盘?

在Windows 7中,它是所有程序> Accesseries>轻松访问>在屏幕键盘上。

如果你愿意,你可以自己编写,但是当我不想拿起键盘时,我会一直使用Windows。

您可以创建一个快捷方式:

位置为%windir%\ system32 \ osk.exe

所以要在TextBox_Click事件中启动它(或者你要触发的任何事件)

//应该工作,我还没有测试过。 System.Diagnostics.Process.Start(" C:\ Windows \ System32下\ osk.exe&#34);

只是一个更新:在我的机器上工作时我尝试运行该代码时遇到错误(我将其构建为测试)并且我必须将osk.exe复制到另一个目录然后启动它并且它有效。 / p>

    /// <summary>
    /// Test to show launching on screen board (osk.exe).
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void textBox1_Click(object sender, EventArgs e)
    {
        try
        {
            Process.Start(@"c:\Temp\OSK.exe");
        }
        catch (Exception error)
        {
            string err = error.ToString();
        }
    }

此代码有效。

答案 1 :(得分:4)

您的示例为我显示错误

  

“无法启动屏幕键盘”

我发现这段代码运行正常,没有任何错误:

static void StartOSK()
{
  string windir = Environment.GetEnvironmentVariable("WINDIR");
  string osk = null;

  if (osk == null)
  {
    osk = Path.Combine(Path.Combine(windir, "sysnative"), "osk.exe");
    if (!File.Exists(osk))
      osk = null;
  }

  if (osk == null)
  {
    osk = Path.Combine(Path.Combine(windir, "system32"), "osk.exe");
    if (!File.Exists(osk))
    {
      osk = null;
    }
  }

  if (osk == null)
    osk = "osk.exe";

  Process.Start(osk);
}

答案 2 :(得分:1)

我认为您必须创建一个新表单来创建键盘并在文本框中单击

启动此表单

答案 3 :(得分:1)

我认为你可以使用。 System.Diagnostics.process.start

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