2014-02-05 52 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