ふりがなの自動入力を行う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コンポーネントは、ユーザーの入力操作を軽減し誤入力の防止にも役立つので、日本語のアプリを作る際にはとても効果的なコンポーネントと言えるでしょう。