我在VB中加入部件Microsoft RichText后,使用上很多與TextBox一樣。
但是,有一個問題很郁悶。例如,我寫了下面這個代碼:
Private Sub RichTextBox1_Change()
Label1.Caption = RichTextBox1.Text
End Sub
一般情況下,Label1上的文字和RichText中文字一樣,每打一個字都變一次。
這個問題是在使用五筆輸入法下出現的:
在輸入aqaq時,提示框是“1.葡萄 2.區區”,此時若繼續打其他字母,如b,正常情況下,“葡萄”二字將會上屏,而b也出現并提示變為“了”(五筆中b=了)。然而,只要在Change事件中加入讀取RichTextBox1.Text的代碼,輸入b時,“葡萄”二字雖然上屏了,同時b字母也就消失了。
此現象被有些人稱為“第五碼丟失”。這個現象誰能幫我解決嗎?

補充,在Change事件中寫代碼代碼沒問題,比如給某幾個字設顏色等,都沒問題。但只要用到RichTextBox1.Text就有問題。
另外還有一個其他問題:有時小鍵盤打數字時,數字能上屏,卻不觸發Change事件。是什么回事呢?
uj5u.com熱心網友回復:
這種因“控制元件引起”的問題,恐怕不能從代碼上解決。
你所說的“第五碼丟失”,我這兒試了下確實是會那樣。
但用標準控制元件中的TextBox就沒那個問題。
但“數字能上屏,卻不觸發Change事件”,
我這兒可沒有這事,是能夠觸發Change()事件的。
你仔細檢查一下你的代碼,這個事件跟“從哪兒輸入”是沒關系的,
即使用程式陳述句改變它的Text文本內容,也會觸發Change事件的。
uj5u.com熱心網友回復:
樓上莫非是陳輝?不知使用VC中的RichEdit(1.0或2.0)有否此問題。另外,我覺得在VB中能夠解決,是否,有一款軟體,叫《益國打字通》,用SPY++和Depends查得它是用VB做的,它的輸入框正是RichText,它能夠在打字程序判斷正確和錯誤的字(和上面對照欄的文字比較),說明其一定也用了RichTextBox1.Text,但是它卻沒有“第五碼丟失”現象。我寫信問作者,他不理我。
樓上如果有興趣,可以下載《益國打字通》看看。我下載并上傳到了這里
http://at01.cn/download/yiguo.rar,從中選擇“文章練習”即可試到效果。(記得從軟體中選擇輸入法)
另外我的程式傳到這里http://at01.cn/download/dz.rar,還請專家你看看啊!
uj5u.com熱心網友回復:
不是。
陳輝已經好幾年沒出現了。
他的賬號好像是 chenhui530 吧。
uj5u.com熱心網友回復:
果然是VB6程式。
但不知道他是如何處理實作“防止第五碼丟失”的。
軟體中他用的那個RICHTX32.ocx ,就是VB6帶的那個版本的控制元件。
uj5u.com熱心網友回復:
我甚至覺得他沒有特意做什么處理,無意中避開了“第五碼丟失”的情況。樓上兄臺也是高手,我邀請你加入我的VB群好嗎?此群創建有十年了,各種朋友都在。陳輝在里面一段時間后退出了。
VB群號200452312
uj5u.com熱心網友回復:
RICHTX32.ocx似乎分英文版和Unicode版或漢字版。uj5u.com熱心網友回復:
此問題遷延一年多了,一直沒有解決。有哪位高手能幫忙解決,愿意送分送銀子啊!!uj5u.com熱心網友回復:
剛才新建了一個標準EXE工程來試,沒有任何問題。作業系統是一樣的,只是重新安裝過了。
輸入法不一樣,在1樓試驗、回復時,那個時候用的是“極點五筆”。 現在用的輸入法是智能陳橋 7.9版。
2017年9月底,換硬碟、重新安裝系統后,只安裝了智能陳橋,其它的輸入法就沒用了。
(系統都是用同一個Ghost鏡像檔案來安裝的: Win 7 旗艦版/SP1 64位)
uj5u.com熱心網友回復:
舊的輸入法怎么會自動適應新控制元件新系統呢?
uj5u.com熱心網友回復:
這個與輸入法軟體也有關系,用智能五筆(陳橋)就可以的uj5u.com熱心網友回復:
漢字輸入法實際上“攔截”了我們對于文本框的輸入。當它積累了多次擊鍵的結果時,才將它轉換出的漢字編碼提交給文本框。要解決這樣的問題,可能需要用鉤子取得鍵盤操作的資訊,根據情況來進行適當的處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/48460.html
標籤:控件
