none
ImeModeChanged 有 BUG RRS feed

  • 一般討論

  • 在.NET v4之前不管用鍵盤或滑鼠切換輸入法皆會引發ImeModeChanged事件,到了.NET v4之後卻不會引發,不知是微軟將功能移除還是.NET的BUG呢?    
    • 已變更類型 璉璉Moderator 2017年3月5日 下午 02:52 無後續回應的問題
    2017年2月8日 下午 12:49

所有回覆

  • MSDN文件是說:控制項必須支援 Input Method Managers 才會引發ImeModeChanged事件, 您可以把輸入焦點移至控制項(例如TextBox控制項), 再切換輸入法看看
    2017年2月9日 上午 01:44
  • 是的,只在WinForm中加入一個TextBox,建立Event如下

    private void textBox1_ImeModeChanged(object sender, EventArgs e)
    {
       MessageBox.Show("Text:"+ textBox1.ImeMode.ToString());
    }

    採用.NET v4以上就不正常了

    • 已編輯 netkids 2017年2月9日 上午 03:26
    2017年2月9日 上午 03:25
  • 你可以到美國的論壇發問:https://social.msdn.microsoft.com/Forums/windows/en-US/home?forum=winforms

    那裡比較容易有開發團隊的成員出沒。


    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年2月9日 上午 05:53
    版主
  • 您有設定TextBox的ImeMode屬性嗎? 我在Form的建構函式加入下列的程式碼, ImeModeChanged事件會正常引發

    public Form1()
    {
      InitializeComponent();
      textBox1.ImeMode = ImeMode.On;
      textBox1.ImeModeChanged += TextBox1_ImeModeChanged;
    }

    2017年2月9日 上午 07:26
  • 設不設結果都一樣,奇怪的是在v4以前的版本都可以正常運作,v4之後就不正常
    2017年2月9日 上午 11:08
  • 我用的工具是VS2015, 只要有設定ImeMode屬性, 事件就會正常觸發
    2017年2月10日 上午 02:50
  • 感謝大神耐心為我解答,我的開發環境是Windows 10 + VS2013,我用Hyper建立了一個Windows 7 + VS2015測試後結果一樣,我將我的測試過程錄製了一段視頻,還請大神看看我的測試過程是否有問題。

    視頻網址:https://youtu.be/9fcc_GYjUeI

    2017年2月10日 下午 01:56
  • 這事情很妙,我的 Windows 10 有兩種語言鍵盤設定(台灣繁體中文和美國英文)

    預設在繁體中文時,我測試的結果和樓主一樣,沒有反應。

    我在沒有關閉這個應用程式的狀況下,把鍵盤語言從中文調成英文再調成中文。那個事件委派函式就被執行了。


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2017年2月10日 下午 04:08
    版主
  • 這樣做應該沒有什麼問題, 我想了一下, 試驗的時候好像用的環境是Windows 8.1(不是很確定), 如果沒有記錯的話, 則有可能是Windows版本造成的影響
    2017年2月11日 上午 08:22
  • 我認為是.NET的問題,v4之前的版本不管是Windows 7或Windows 10皆可以正常運作,v4之後才發生問題的。
    2017年2月11日 上午 09:17
  • 我後來發現, 切換中文/英文時會引發ImeModeChanged事件, 但是選擇不同的中文輸入法(例如注音/倉頡輸入法)時不會引發ImeModeChanged事件, 因為不算ImeModeChanged事件吧..
    2017年2月13日 上午 02:51
  • 我的問題就是"切換中文/英文時會不引發ImeModeChanged事件"

    今天做了一個完整的測試,分別編譯了目標Framework v2與v4的兩支程式,分別命名為v2與v4,從XP測試起。

    OS 安裝.NET 版本 v2程式 v4程式
    Windows XP 2.0與4.0 正常 正常
    Windows 7 2.0與4.0 正常 正常
    Windows 7 2.0與4.5.2 正常 不引發
    Windows 8.1 2.0與4.5.2 正常 不引發
    Windows 10 2.0與4.5.2 正常 不引發

    在Windows 7的環境我發現未安裝v4.5.2 .NET前測試是正常的,當我安裝了v4.5.2之後就不引發了,試了v4.6.1也是一樣的問題。

    所以我個人還是認為是.NET有BUG存在。

    • 已編輯 netkids 2017年2月22日 下午 02:33
    2017年2月22日 上午 11:28
  • 其實我也有這麼一丁點這麼覺得,建議你可以到 http://connect.microsoft.com/ 回報這個問題。搞不好 (運氣很好的話)下一版就會修好。

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2017年2月23日 上午 04:35
    版主