Visual Basic 2010 判斷使用者是否正在輸入中文

假設有一個Textbox,

Visual Basic 2010 判斷使用者是否正在輸入中文

當沒有輸入任何字時,textbox.text=nothing會成立。



Visual Basic 2010 判斷使用者是否正在輸入中文

可是當中文輸入中(未按Enter)時,textbox.text=nothing也會成立。


有沒有辦法可以判斷使用者正在輸入中?

(此功能是要提示使用者輸入太快沒有按enter就送出資料而警告使用者)
textbox.focus == true && keyboard is typing

roy12c wrote:
textbox.focus...(恕刪)


keyboard is typing
我不是要中文翻譯哦~
謝謝~
keydown 事件,自己去看一下,概念已經提供給你了
roy12c wrote:
keydown 事件...(恕刪)


我已經試過了!
任何輸入中的文字他的e.keycode都是ProcessKey{229}!

更何況keydown是觸發按下按鍵事件,並非我所指的判別是否輸入中!


謝謝~

brad1228 wrote:
我已經試過了!任何...(恕刪)


抱歉我只提供概念,並未實際測試,以為你會去try keyDown keyUP KeyPress的差異
下列趁閒暇之餘我已實際測試,改用KeyUp事件

private void textBox_SNStart_KeyUp(object sender, KeyEventArgs e)
{
MessageBox.Show("Key code: " + Convert.ToString(e.KeyCode) + ", Key value: " + Convert.ToString(e.KeyValue) + ", Text length: " + Convert.ToString(textBox_SNStart.Text.Length));
}


你可判斷Ascii code為中英文數字,若為中文輸入法,text length 為0,如下圖:



Ascii code為中英文數字,若非中文輸入法,text length 為1,如下圖:

roy12c wrote:
抱歉我只提供概念,並...(恕刪)


直接判別是否正在輸入中文很難達到,
不過我受你的啟發用了其他一些方法(旁門左道)

(利用中文聲調來判別輸入幾個字,並在按enter後清除)
If e.KeyCode = 32 Or e.KeyCode = 51 Or
e.KeyCode = 52 Or e.KeyCode = 54 Or e.KeyCode = 55 Then
'聲調1234、輕聲
Words += 1

ElseIf e.KeyCode >= 48 And e.KeyCode <= 57 And
e.KeyCode <> 54 And e.KeyCode <> 55 Then
ChineseNotYet = True'中文注音

ElseIf e.KeyCode >= 65 And e.KeyCode <= 90 Then
ChineseNotYet = True'中文注音

ElseIf e.KeyCode = 186 Or e.KeyCode = 191 Or
e.KeyCode = 189 Then'中文注音
ChineseNotYet = True

ElseIf e.KeyCode = 8 And Words > 0 Then'backspace鍵
Words -= 1

ElseIf e.KeyCode = 13 Then 'enter
Words = 0
End If

If Words <= 0 Then ChineseNotYet = False



brad1228 wrote:
Visual Basic 2010 判斷使用者是否正在輸入中文

中文有特定的編碼範圍,
你直接去判斷編碼範圍會比較準確.
☆ 私人訊息直接刪除不再回覆 ☆ 願望 : bovuhPPjMnEfkyhggnsJdABaLFPuhXT4
google查 IME VB 就會有教學了

連上IME的消息機制後可以知道 啟用關閉更換輸入法 都會有訊息


plusv wrote:
中文有特定的編碼範圍...(恕刪)


我要求的功能無法判斷輸入的文字
因為文字還沒在textbox裡,讀取不到

我的解決方法是利用按鍵來猜測

像google搜尋欄那樣,
還沒完成輸入(按enter)就可以讀到使用者輸入甚麼
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!