假設有一個Textbox,當沒有輸入任何字時,textbox.text=nothing會成立。可是當中文輸入中(未按Enter)時,textbox.text=nothing也會成立。有沒有辦法可以判斷使用者正在輸入中?(此功能是要提示使用者輸入太快沒有按enter就送出資料而警告使用者)
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 Ore.KeyCode = 52 Or e.KeyCode = 54 Or e.KeyCode = 55 Then'聲調1234、輕聲Words += 1ElseIf e.KeyCode >= 48 And e.KeyCode <= 57 Ande.KeyCode <> 54 And e.KeyCode <> 55 ThenChineseNotYet = True'中文注音ElseIf e.KeyCode >= 65 And e.KeyCode <= 90 ThenChineseNotYet = True'中文注音ElseIf e.KeyCode = 186 Or e.KeyCode = 191 Ore.KeyCode = 189 Then'中文注音ChineseNotYet = TrueElseIf e.KeyCode = 8 And Words > 0 Then'backspace鍵Words -= 1ElseIf e.KeyCode = 13 Then 'enterWords = 0End IfIf Words <= 0 Then ChineseNotYet = False
plusv wrote:中文有特定的編碼範圍...(恕刪) 我要求的功能無法判斷輸入的文字因為文字還沒在textbox裡,讀取不到我的解決方法是利用按鍵來猜測像google搜尋欄那樣,還沒完成輸入(按enter)就可以讀到使用者輸入甚麼