セルでは、ImeModeプロパティまたInputScopeプロパティを使用して、IMEモードを設定することができます。ここでは、IMEモードの設定について説明します。
CalendarCellStyle.ImeModeプロパティとCalendarCellStyle.ImeSentenceModeプロパティを使用すると、標準コントロールと同じ入力モードの設定に加えて、変換モードの設定を利用できます。
セルは標準コントロールと同じ IME 入力モードをサポートしています。IME 入力モードの設定値は System.Windows.Forms.ImeMode と同じです。たとえば、次のモードを使用できます。
セルのIME入力モードは、CalendarCellStyle.ImeModeプロパティで設定します。
Dim today As DateTime = DateTime.Today GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellStyle.ImeMode = ImeMode.Hiragana
var today = DateTime.Today;
gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellStyle.ImeMode = ImeMode.Hiragana;
変換モードは、IME によって提供されるかな漢字変換の動作モードです。たとえば、変換時に文字列を人名・地名に優先的にマッチさせることができます。サポートされる変換モードは次のとおりです。
セルの IME変換モードは、CalendarCellStyle.ImeSentenceModeプロパティで設定します。
Imports GrapeCity.Win.CalendarGrid Dim today As DateTime = DateTime.Today GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellStyle.ImeSentenceMode = CalendarImeSentenceMode.BiasForNames
using GrapeCity.Win.CalendarGrid; var today = DateTime.Today; gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellStyle.ImeSentenceMode = CalendarImeSentenceMode.BiasForNames;
Windows 7以前のOSではIMEモードがスレッド単位で保持されていましたが、Windows 8以降ではユーザー単位で保持されるように仕様が変更されています。この変更によって、ImeModeプロパティによるIMEモードの切り替えが動作しない場合があります。
Windows 8以降の環境において、Windows 7以前のOSと同じようにIMEモードをスレッド単位で保持するには、以下の手順で「アプリウィンドウごとに異なる入力方式を設定する」の設定を変更します。
なお、InputScope プロパティを使用することで上記の設定なしで Windows 7以前のOSと同じように IMEモードを制御することができます。
CalendarCellStyle.InputScopeプロパティを使用すると、Windows 8以降の環境でも、Windows 7以前の OS と同じようにIME モードを制御することができます。
CalendarGridにおけるInputScopeプロパティとImeModeプロパティの挙動の差異は現在のところ確認されていませんが、InputScopeプロパティの動作はText Services Framework のSetInputScope関数に依存した動作となり、ImeMode プロパティとは異なる内部構造で動作するプロパティとなるため、Windows 8以降の OS においてIMEモードを Windows 7以前の動作と全く同じ挙動にしたい場合は、上記 OS の設定値(「アプリ ウィンドウごとに異なる入力方式を設定する」)を変更することを推奨します。
ただし、セルに CellStyle.ImeModeプロパティとCellStyle.InputScopeプロパティの両方が変更されている場合、InputScopeプロパティの設定が優先されます。ImeModeプロパティの設定を優先したい場合は、InputScopeプロパティを Default に設定する必要があります。
次のコードでは、InputScopeプロパティを使用して、セルのIME入力モードを設定します。
Imports GrapeCity.Win.CalendarGrid Dim today As DateTime = DateTime.Today GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellStyle.InputScope = CalendarInputScopeNameValue.Hiragana
using GrapeCity.Win.CalendarGrid; var today = DateTime.Today; gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellStyle.InputScope = CalendarInputScopeNameValue.Hiragana;
注意:
|