ふりがなの自動入力を行うGcImeManagerコンポーネントの設定
今度は、グリッドの下の行にTextBoxコントロールを配置し、ふりがなの自動入力を行うGcImeManagerコンポーネントを設定します。ふりがな入力は、「ひらがな」と「半角カナ」の2種類を作成します。それぞれ、別々のTextBoxコントロールに設定します。
Borderコントロールを1つと、TextBox・TextBlockコントロールを4つ配置します。
<!-- ふりがなの自動入力の設定 -->
<Border BorderBrush="SlateBlue" BorderThickness="2" Grid.Row="1" Height="178" HorizontalAlignment="Left"
Margin="20,20,0,0" Name="border1" VerticalAlignment="Top" Width="462" Background="Aqua" />
<TextBlock Grid.Row="1" Height="36" HorizontalAlignment="Left" Margin="30,37,0,0" Name="textBlock4" Text="好きな漢字を入力してください。"
VerticalAlignment="Top" Width="101" TextWrapping="Wrap" />
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="144,37,0,0" Name="textBox4" VerticalAlignment="Top" Width="324" />
<TextBlock Grid.Row="1" Height="25" HorizontalAlignment="Left" Margin="81,79,0,0" Name="textBlock5" Text="ひらがな"
VerticalAlignment="Top" Width="50" />
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="143,76,0,0" Name="textBox5" VerticalAlignment="Top" Width="325">
</TextBox>
<TextBlock Grid.Row="1" Height="36" HorizontalAlignment="Left" Margin="30,115,0,0" Name="textBlock6" Text="好きな漢字を入力してください。"
VerticalAlignment="Top" Width="101" TextWrapping="Wrap" />
<TextBox Grid.Row="1" Height="21" HorizontalAlignment="Left" Margin="142,115,0,0" Name="textBox6" VerticalAlignment="Top" Width="326" />
<TextBlock Grid.Row="1" Height="21" HorizontalAlignment="Left" Margin="81,157,0,0" Name="textBlock7" Text="カタカナ" VerticalAlignment="Top" Width="31" />
<TextBox Grid.Row="1" Height="27" HorizontalAlignment="Left" Margin="145,154,0,0" Name="textBox7" VerticalAlignment="Top" Width="321">
</TextBox>
最初のTextBoxコントロール「textBox4」で、ふりがなの文字種を「ひらがな」に、ふりがなの入力モードを「追記」に設定し、IMEをオンにします。
ふりがなの文字種は、GcImeManagerクラスの「ReadingStringKanaMode」プロパティを使用し、設定値を「Hiragana」にします。入力モードは、GcImeManagerクラスの「ReadingStringOutputMode」プロパティを使用し、設定値を「Append」にします。IMEのオンは、InputMethodクラスの「PreferredImeState」プロパティを「On」にします。
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="144,37,0,0" Name="textBox4" VerticalAlignment="Top" Width="324"
im:GcImeManager.ReadingStringKanaMode="Hiragana" im:GcImeManager.ReadingStringOutputMode="Append" InputMethod.PreferredImeState="On" />
ふりがなを受け取るTextBoxコントロール「textBox5」では、Textプロパティに「Binding」オブジェクトを設定し、ふりがなの送り先を「ElementName」プロパティと「Path」プロパティで設定します。
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="143,76,0,0" Name="textBox5" VerticalAlignment="Top" Width="325">
<TextBox.Text>
<Binding Mode="TwoWay" ElementName="textBox4" Path="(im:GcImeManager.ReadingString)" />
</TextBox.Text>
</TextBox>
これで、TextBoxコントロール「textBox4」に入力された文字列のふりがなが、TextBoxコントロール「textBox5」に「ひらがな」で入力されます。「追記」モードでは、一度ふりがなを入力したのちに続けて入力すると、作成されたふりがなのあとに続けてふりがなが入力されます。
残りの2つのTextBoxコントロールも、同じように作成します。ただし、今度はふりがなを半角カナにするので、入力側のTextBoxコントロールのReadingStringKanaModeプロパティを「KatakanaHalf」に設定します。また、ふりがなの入力モードを「上書き」モードにしますので、ReadingStringOutputModeプロパティを「Replace」にします。
「上書き」モードでは、一度ふりがなを入力したのちに続けて入力すると、作成されたふりがなが入れ変わります。
<TextBlock Grid.Row="1" Height="36" HorizontalAlignment="Left" Margin="30,115,0,0" Name="textBlock6" Text="好きな漢字を入力してください。"
VerticalAlignment="Top" Width="101" TextWrapping="Wrap" />
<TextBox Grid.Row="1" Height="21" HorizontalAlignment="Left" Margin="142,115,0,0" Name="textBox6" VerticalAlignment="Top" Width="326"
im:GcImeManager.ReadingStringKanaMode="KatakanaHalf" im:GcImeManager.ReadingStringOutputMode="Replace" InputMethod.PreferredImeState="On" />
<TextBlock Grid.Row="1" Height="21" HorizontalAlignment="Left" Margin="81,157,0,0" Name="textBlock7" Text="カタカナ" VerticalAlignment="Top" Width="31" />
<TextBox Grid.Row="1" Height="27" HorizontalAlignment="Left" Margin="145,154,0,0" Name="textBox7" VerticalAlignment="Top" Width="321">
<TextBox.Text>
<Binding Mode="TwoWay" ElementName="textBox6" Path="(im:GcImeManager.ReadingString)" />
</TextBox.Text>
</TextBox>
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:im="http://schemas.grapecity.com/windows/2010/inputman"
Title="MainWindow" Height="396" Width="548">
<Window.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF6400B0" Offset="0" />
<GradientStop Color="White" Offset="1" />
<GradientStop Color="#FF7A7FD7" Offset="1" />
</LinearGradientBrush>
</Window.Background>
<Grid Height="351" Width="501">
<Grid.RowDefinitions>
<RowDefinition Height="138*" />
<RowDefinition Height="239*" />
</Grid.RowDefinitions>
<!-- IMEの状態を保持する設定 -->
<Border BorderBrush="Olive" BorderThickness="2" Height="92" HorizontalAlignment="Left" Margin="20,22,0,0"
Name="border2" VerticalAlignment="Top" Width="460" Background="GreenYellow" />
<TextBlock Name="textBlock1" Text="性" Margin="69,38,0,45" HorizontalAlignment="Left" Width="35" />
<TextBox Height="25" HorizontalAlignment="Left" Margin="94,35,0,0" Name="textBox1" VerticalAlignment="Top" Width="87"
InputMethod.PreferredImeState="On" InputMethod.PreferredImeConversionMode="Native, FullShape" im:GcImeManager.AllowSaveImeStatus="True" />
<TextBlock Height="22" HorizontalAlignment="Right" Margin="0,38,279,0" Name="textBlock2" Text="名" VerticalAlignment="Top" Width="28" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="223,37,0,0" Name="textBox2" VerticalAlignment="Top" Width="91"
InputMethod.PreferredImeState="On" InputMethod.PreferredImeConversionMode="FullShape, Native" im:GcImeManager.AllowSaveImeStatus="True" />
<TextBlock Height="18" HorizontalAlignment="Left" Margin="30,73,0,0" Name="textBlock3" Text="ローマ字" VerticalAlignment="Top" Width="62" />
<TextBox Height="26" HorizontalAlignment="Left" Margin="94,71,0,0" Name="textBox3" VerticalAlignment="Top" Width="252"
InputMethod.PreferredImeState="Off"/>
<!-- ふりがなの自動入力の設定 -->
<Border BorderBrush="SlateBlue" BorderThickness="2" Grid.Row="1" Height="178" HorizontalAlignment="Left"
Margin="20,20,0,0" Name="border1" VerticalAlignment="Top" Width="462" Background="Aqua" />
<TextBlock Grid.Row="1" Height="36" HorizontalAlignment="Left" Margin="30,37,0,0" Name="textBlock4" Text="好きな漢字を入力してください。"
VerticalAlignment="Top" Width="101" TextWrapping="Wrap" />
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="144,37,0,0" Name="textBox4" VerticalAlignment="Top" Width="324"
im:GcImeManager.ReadingStringKanaMode="Hiragana" im:GcImeManager.ReadingStringOutputMode="Append" InputMethod.PreferredImeState="On" />
<TextBlock Grid.Row="1" Height="25" HorizontalAlignment="Left" Margin="81,79,0,0" Name="textBlock5" Text="ひらがな"
VerticalAlignment="Top" Width="50" />
<TextBox Grid.Row="1" Height="23" HorizontalAlignment="Left" Margin="143,76,0,0" Name="textBox5" VerticalAlignment="Top" Width="325">
<TextBox.Text>
<Binding Mode="TwoWay" ElementName="textBox4" Path="(im:GcImeManager.ReadingString)" />
</TextBox.Text>
</TextBox>
<TextBlock Grid.Row="1" Height="36" HorizontalAlignment="Left" Margin="30,115,0,0" Name="textBlock6" Text="好きな漢字を入力してください。"
VerticalAlignment="Top" Width="101" TextWrapping="Wrap" />
<TextBox Grid.Row="1" Height="21" HorizontalAlignment="Left" Margin="142,115,0,0" Name="textBox6" VerticalAlignment="Top" Width="326"
im:GcImeManager.ReadingStringKanaMode="KatakanaHalf" im:GcImeManager.ReadingStringOutputMode="Replace" InputMethod.PreferredImeState="On" />
<TextBlock Grid.Row="1" Height="21" HorizontalAlignment="Left" Margin="81,157,0,0" Name="textBlock7" Text="カタカナ" VerticalAlignment="Top" Width="31" />
<TextBox Grid.Row="1" Height="27" HorizontalAlignment="Left" Margin="145,154,0,0" Name="textBox7" VerticalAlignment="Top" Width="321">
<TextBox.Text>
<Binding Mode="TwoWay" ElementName="textBox6" Path="(im:GcImeManager.ReadingString)" />
</TextBox.Text>
</TextBox>
</Grid>
</Window>
まとめ
アンケート入力の画面などは、氏名や住所の入力時にふりがなも入力しなければならないので、ユーザーにとっては煩雑な操作の1つでもあります。
GcImeManagerコンポーネントは、ユーザーの入力操作を軽減し誤入力の防止にも役立つので、日本語のアプリを作る際にはとても効果的なコンポーネントと言えるでしょう。

