wiki.php 用Markdown写wiki是一种什么样的体验?

设置窗体的默认IME模式.md

最后更新于 2019-10-06 15:00:33

.NET窗体中默认对中文输入法的支持非常不好,如果你直接在窗体中使用 Textbox 控件,在调试过程中会发现无法切换到中文输入法,这是因为.NET窗体默认的Ime模式为 ==ImeMode.NoControl== ,而开启输入法的话需要调整控件的 ==ImeMode== 属性为开启状态才可以。
但是如果纯粹将 ==Textbox.ImeMode== 设置为 ==ImeMode.On== ,则会发现当开启输入法时,默认的输入法会采用全角符号,也就是你开启输入法,再按下shift快速输入英文符号时,英文会是全角状态。
解决的方法是将 ImeMode 设置为各种半角状态,即可解决(如 ==ImeMode.OnHalf==)。
不过如果你窗体中拥有较多的 textbox 控件,而又不想去逐个设置其 ImeMode 属性,则可以用下面的代码,来默认窗体的 ImeMode 行为,从而一劳永逸的解决这个问题。

Public Class Form1

    ' 重写默认IME模式
    Protected Overrides ReadOnly Property DefaultImeMode() As ImeMode
        Get
            ' 采用半角模式
            Return ImeMode.OnHalf
        End Get
    End Property

End Class

这个方法重写窗体的 ==DefaultImeMode== 属性(这个属性是只读的,因此无法在状态中改写),就可以默认窗体内所有输入类型的控件的ImeMode。