Input for WinForms
フリガナの取得(C1TextBox コントロール)
C1Input コントロールの使い方 > 日本語特有の機能 > フリガナの取得(C1TextBox コントロール)

C1TextBoxでは、IMEにより入力された漢字かな交じりテキストから、その漢字の読みを取得する機能が用意されています。これにより、氏名や住所が入力された際に自動的にふりがなを取得・表示する処理を容易に実装できます。

ふりがなの取得に関連するメンバーは以下の通りです。

メンバー名 説明
ImeGetKanaMode このメソッドは、コントロールに関連付けられたかなモードを示すKanaMode値を返します。
ImeSetKanaMode このメソッドは、コントロールに対して指定されたかなモードを関連付けます。
ImeGetReadingStringOutput このメソッドは、コントロールに関連付けられているReadingStringOutputオブジェクトを返します。
ImeSetReadingStringOutput このメソッドは、コントロールに対してReadingStringOutputオブジェクトを関連付けます。
ImeResultString このイベントは、IMEによる入力処理で有効な結果文字列がある場合に発生します。

ふりがなのモードを指定する場合は、ImeSetKanaModeメソッドを使用し、KanaMode列挙値のいずれかの値を指定します。KanaMode列挙体には以下の値が定義されています。

説明
Hiragana 読みをひらがなで取得します。
Katakana 読みを全角カタカナで取得します。
KatakanaHalf 読みを半角カタカナで取得します。

また、ImeSetReadingStringOutputメソッドを使用して、読みを出力するコントロールと出力モードを指定します。出力モードは、ReadingStringOutputMode列挙体のいずれかの値を指定します。ReadingStringOutputMode列挙体には以下の値が定義されています。

説明
Append 元のテキストの最後に新しいテキストを追加します。
Intelligence  ふりがな出力を自動的に維持します。
Replace ターゲットコントロールのすべてのテキストを置き換えます。

以下に、C1TextBox1に入力された漢字かな交じりテキストの読みを、C1TextBox2に対してひらがなで出力し、同時にImeResultStringイベントを使用して読み仮名を取得するサンプルコードを紹介します。

Visual Basic
コードのコピー

Private Sub Form1_Load(sender As Object, e As EventArgs)
    C1TextBox1.ImeSetKanaMode(C1.Win.C1Input.GrapeCity.Editors.KanaMode.Hiragana)
    Dim output = New C1.Win.C1Input.GrapeCity.Editors.ReadingStringOutput(C1TextBox2,
                        C1.Win.C1Input.GrapeCity.Editors.ReadingStringOutputMode.Append)
    C1TextBox1.ImeSetReadingStringOutput(output)
    AddHandler C1TextBox1.ImeResultString, AddressOf C1TextBox1_ImeResultString
End Sub

Private Sub C1TextBox1_ImeResultString(sender As Object, e As
                        C1.Win.C1Input.GrapeCity.Editors.ResultStringEventArgs)
    Console.WriteLine(e.ReadString)
End Sub

 

C#
コードのコピー

private void Form1_Load(object sender, EventArgs e)
{
    c1TextBox1.ImeSetKanaMode(C1.Win.C1Input.GrapeCity.Editors.KanaMode.Hiragana);
    var output = new
        C1.Win.C1Input.GrapeCity.Editors.ReadingStringOutput(c1TextBox2,
    C1.Win.C1Input.GrapeCity.Editors.ReadingStringOutputMode.Append);
    c1TextBox1.ImeSetReadingStringOutput(output);
    c1TextBox1.ImeResultString += c1TextBox1_ImeResultString;
}

void c1TextBox1_ImeResultString(object sender,
C1.Win.C1Input.GrapeCity.Editors.ResultStringEventArgs e)
{
    Console.WriteLine(e.ReadString);
}

上記コードの実行結果

1つ目のテキストコントロールに対して漢字かな交じりテキストを入力すると、IME上で入力文字列が確定するたび、確定文字列の読みが2つ目のコントロールに追記されます。また、ImeResultStringイベントが発生し、イベント引数にて確定文字列の読みが取得できます。