我們有一個.NET 2.0 Windows窗體應用程序,其中包含許多自定義控件。幾年前,我們將應用程序全球化,因此用戶可以看到適合特定文化的符號和翻譯。文化特定處理Windows窗體中的數字小鍵盤小數點鍵
法國加拿大客戶要求我們更改我們的應用程序處理數字小數點鍵的方式。當用戶按下此鍵時,我們的數字控件沒有做任何事情。
我將我的Windows區域設置切換到法國 - 加拿大並調試我們的應用程序。我看到當前的文化和當前的UI文化被設置爲fr-CA。
在OnKeyDown和OnKeyPress中我看到鍵盤週期(Keys.OemPeriod)和數字鍵盤週期(Keys.Decimal)之間的區別。 OnKeyDown中會出現特定的按鍵。然而,在這兩種情況下,該事件的OnKeyPress給我們的控制期:
Key OnKeyDown OnKeyPress
================= ============== ==========
Main Keyboard Keys.OemPeriod "."
Number Pad Period Keys.Decimal "."
我們的數字控制處理的事件的OnKeyPress號碼輸入。由於該期間不是當前文化中的小數分隔符,因此控制拒絕這個字符。
全球化設置是否應該將Keys.Decimal(數字鍵盤「。」)自動轉換爲逗號,還是我們的應用程序應該將Keys.Decimal更改爲文化特定的小數點分隔符?我期望.NET自動完成這個翻譯。