台灣最大程式設計社群網站
線上人數
1357
 
會員總數:239622
討論主題:185885
歡迎您免費加入會員
討論區列表 >> VB.NET >> 控制項imeMode設定問題
[ 變換順序 ]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
控制項imeMode設定問題
價值 : 500 QP  點閱數:1278 回應數:22

樓主

YuLi
門外漢
0 4
969 21
發送站內信

在程式執行階段,將控制項的imeMode屬性設定成disable後,要再設定成其他屬性就失效了

將程式中斷印出控制項的imeMode屬性也確實有被改掉,但是依然無法輸入中文

請問設定成disable後是不是就不能再改回來了呢?




搜尋相關Tags的文章: [ imeMode ] ,
本篇文章發表於2016-05-16 11:50
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
剛實測改的回來..

你的問題是?
本篇文章回覆於2016-05-16 14:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

YuLi
檢舉此回應
屬性有被改回來沒錯,但是實際上依然無法輸入中文
本篇文章回覆於2016-05-16 14:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
我測可以..你的輸入法是?
本篇文章回覆於2016-05-17 11:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

YuLi
檢舉此回應
微軟注音、微軟倉頡、嘸蝦米,使用這三種都不行

我的步驟是,先改成disable


接著再改回nocontrol


控制項的屬性都沒調過,完全是預設值




會使用ComboBox的原因,目前程式碰到一個問題

輸入法為:微軟倉頡,Form使用置頂時
去點選ComboBox的下拉選單都會自動縮回去,導致無法選擇Items
後來發現是因為輸入法的浮動框所影響的,
因此希望在點選下拉選單強制關閉輸入法,由於ComboBox是能夠輸入關鍵字做搜尋的所以才又必須設定回NoControl


本篇文章回覆於2016-05-17 15:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
你的問題我實測也是這樣,目前我是建議你換個事件。
mouseEnter跟mouseClick關聯性太強了。
進入後觸發enter,點下去觸發click,但滑鼠還在控制項內。不確定是不是這個原因造成。
我目前用

我沒有實測,用倉頡然後form置頂,下拉選單會縮回去的情形。
combobox事件表
https://msdn.microsoft.com/zh-tw/library/system.windows.forms.combobox_events(v=vs.110).aspx
本篇文章回覆於2016-05-17 16:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

YuLi
檢舉此回應
之前有先測過在ComboBox1.DropDown事件下更改ImeMode,但是反而Disable無效,所以才會使用ComboBox1.MouseEnter事件

我在mouseEnter、mouseClick都有做Print出ImeMode狀態,
當我點下去觸發click時,並沒有再去觸發mouseEnter,這是我測到的


剛剛又測試了一下
在ComboBox1.MouseEnter事件設定成disable
接著在ComboBox1.KeyDown事件設定NoControl

結果:屬性值有改變,但是依然還是無法輸入中文字


整個無解@@
本篇文章回覆於2016-05-17 17:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

練武功
檢舉此回應
我覺得是ComboBox1_MouseEnter的問題

可以多加個旗標
Dim entersign As Integer = 0

Private Sub ComboBox1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.MouseEnter

If entersign = 0 Then
ComboBox1.ImeMode = Windows.Forms.ImeMode.Disable
End If
entersign = 1
End Sub
多加個
Private Sub ComboBox1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ComboBox1.MouseLeave
entersign = 0
End Sub

ComboBox1_MouseClick不變
本篇文章回覆於2016-05-17 22:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

練武功
檢舉此回應
抱歉

剛才測試時忘記加入項目。
後來加入項目再測試,也無法輸入中文。
本篇文章回覆於2016-05-17 22:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

練武功
檢舉此回應
根據這篇資料
https://msdn.microsoft.com/zh-tw/library/system.windows.forms.imemode(v=vs.110).aspx

其中提到

使用者可以互動方式變更 Control.ImeMode,除非已將其以程式設計的方式設為 ImeMode.Disable。在這種情況下,使用者將無法使用輸入法。

我覺得你不該使用ComboBox1.ImeMode = Windows.Forms.ImeMode.Disable,
因為使用後,你就再也不能變更輸入法了。
是否考慮Off或Close
本篇文章回覆於2016-05-17 22:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

YuLi
檢舉此回應
設定成off並不能將輸入法的浮動框關閉(例:微軟倉頡)
本篇文章回覆於2016-05-18 08:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
剛花了一些時間大概測一下,
很難肯定是哪邊的問題。
或者直接考慮解決原始問題吧?

你說置頂,然後使用倉頡輸入法,會讓combobox的下拉選單消失?
你的置頂方式是哪一種?我是用me.topMost = true
輸入法也用倉頡沒看到你說的。

https://goo.gl/photos/6FAksfiFztnYLrWB9
本篇文章回覆於2016-05-18 09:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

YuLi
檢舉此回應
置頂時,點選下拉選單而不是在ComboBox上Key字

程式一執行的狀態是
ComboBox已經有先選取的Item,
畫面置頂、輸入法倉頡,
接著去點下拉選單-->這時候選單出現一下就會馬上縮回

ps.window10的倉頡輸入法,在畫面上都會有個浮動方框提示目前是中文狀態或是英文狀態,不是提示字的浮動視窗喔!!
本篇文章回覆於2016-05-18 10:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
win10......這我就真的不知道了。
一直沒想去用。需要請其他前輩回答了,我沒機器測。
或者可以到MSDN論壇詢問。

你的環境是win10使用visual studio 2015 開發 windowsForm 還是 win App?
本篇文章回覆於2016-05-18 13:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

YuLi
檢舉此回應
win10的倉頡提示方框,在網路上搜尋過似乎也有人因此覺得不方便,但是目前還沒有看到解決方法

我的環境是
win10使用visual studio 2008 開發 windowsForm
本篇文章回覆於2016-05-18 13:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
回應

Daimom
捐贈 VP 給 Daimom 檢舉此回應
樓主要測一下新酷音的倉頡輸入法嗎?
本篇文章回覆於2016-05-18 15:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   

回覆
如要回應,請先登入.