2014-02-05 21 views
0

我在Windows工作表格提出申请,同时单击文本框我想启用虚拟键盘所以我写了下面的代码在我TxtName_GotFocus事件关闭虚拟keybord自动在.NET

private void button1_Click(object sender, EventArgs e) 
{ 
    System.Diagnostics.Process.Start("osk.exe"); 
    //SetFocus to your TextBox here 
    textBox1.Focus(); 
} 

,但我要关闭此虚拟键盘中的TxtName_LostFocus 那么我怎么写代码呢?

+1

这看起来像'vb.net'不'C#'。 –

+2

'Process.Start'返回一个[''Process'](http://msdn.microsoft.com/en-us/library/system.diagnostics.process(v = vs.110).aspx)对象。不要把它扔掉。 –

回答

1

订阅文本框的LostFocus事件:

Process keyboardProcess; 
private void button1_Click(object sender, EventArgs e) 
{ 
    this.keyboardProcess = System.Diagnostics.Process.Start("osk.exe"); 
    //SetFocus to your TextBox here 
    textBox1.Focus(); 
} 

private void textbox1_LostFocus(object sender, EventArgs e) 
{ 
    this.keyboardProcess.Kill(); 
} 
+0

显示错误:由于进程已退出,无法处理请求。 – user3252014

1
private void button1_Click(object sender, EventArgs e) 
{ 
    System.Diagnostics.Process.Start("osk.exe"); 
    //SetFocus to your TextBox here 
    textBox1.Focus(); 
} 

private void textbox1_LostFocus(object sender, EventArgs e) 
{ 
    var procs = Process.GetProcessesByName("osk"); 
    if (procs.Length != 0) 
     procs[0].Kill(); 
} 
+0

作品对我来说... – Sinatr

+0

请把它标记为答案 – user3252014

+0

我不是OP,但想法很有趣,所以我测试过它,并确认。但我无法*标记*任何东西,只有upvote。 – Sinatr