WinForms中的屏幕上的键盘

问题描述:

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

+0

http://stackoverflow.com/questions/956879/net-winform-keyboard-control – 2012-02-15 17:54:12

你知道Windows有一个屏幕键盘上?

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

如果你愿意,你可以自己写,但是当我不喜欢拿起键盘时,我总是使用Windows。

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

位置是%windir%\ SYSTEM32 \ osk.exe

因此,要启动它,在TextBox_Click事件(或者你想火任何事件)

//应该有效,我还没有测试过。 System.Diagnostics.Process.Start(“c:\ Windows \ System32 \ osk.exe”);

只是一个更新:在我的机器上工作时出现了一个错误,试图运行该代码(我构建它作为一个测试),我不得不复制osk.exe到另一个目录,然后启动它,它工作。

/// <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(); 
     } 
    } 

而这段代码起作用了。

+0

我会说,这有可能会稍微容易产生错误使用内置的Windows屏幕键盘,因为它允许用户发送可能不是应用程序中预期的各种按键。在这种情况下,定制的屏幕键盘将是更安全的选择。 – markj 2015-04-24 12:12:59

我认为你必须创建一个新的形式ccreate键盘和推出这种形式在文本框中单击

你举的例子表明错误我:

“无法启动屏幕键盘”

我发现这个代码没有任何错误,做工精细:

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); 
} 

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

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