Клавиатура на экране в WinForms - PullRequest
2 голосов
/ 15 февраля 2012

Я разработал приложение Windows Forms, которое используется на компьютере с сенсорным экраном. Можно ли отобразить клавиатуру, когда пользователь нажимает на поле ввода (текстовое поле)? И как я могу это сделать?

Ответы [ 4 ]

4 голосов
/ 15 февраля 2012

Знаете ли вы, что в Windows есть экранная клавиатура?

В Windows 7 это Все программы> Аксессуары> Удобство доступа> Экранная клавиатура.

Вы можете написать свою собственную, если выхочу, но я использую 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();
        }
    }

И этот код работал.

4 голосов
/ 16 октября 2012

Ваш пример покажет ошибка для меня:

«Не удалось запустить экранную клавиатуру»

Я нашел этот код, который работает без ошибок:

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);
}
1 голос
/ 26 июня 2013

Я думаю, вы можете использовать.System.Diagnostics.process.start

   System.Diagnostics.Process.Start("osk.exe");
1 голос
/ 15 февраля 2012

Я думаю, вам нужно создать новую форму, чтобы создать клавиатуру и запустить эту форму в текстовом поле. Нажмите

...