SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(InputMan)

Silverlightアプリケーションのテキストボックスで入力値制限や透かし表示を行う

InputMan for Silverlight 1.0JのGcTextBoxコントロールを使ったWebページの作成

  • このエントリーをはてなブックマークに追加

全体のレイアウト作成

 では、ページを作成していきましょう。作り方は、まずグリッドをアンケート項目の数だけ分割し、1行ずつStackPanelでTextBlockとGcTextBoxコントロールを配置していくだけです。ここでは、9行に分割しています。

グリッドと見出しの作成

 グリッドはRowDefinitionsプロパティで複数行に分割し、最初の行にTextBlockで見出しと説明文を入れます。

<Grid x:Name="LayoutRoot" Background="White" >
    <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Width="450" Height="600" >
        <Border BorderThickness="2" BorderBrush="MediumPurple" Background="AliceBlue" >
            <Grid ShowGridLines="True" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="80"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                    <RowDefinition Height="30"></RowDefinition>
                </Grid.RowDefinitions>

                <StackPanel Grid.Row="0" Orientation="Vertical">
                    <TextBlock Text="節電アンケート" HorizontalAlignment="Center" FontSize="18" Foreground="MediumPurple">
                   <TextBlock.Effect>
                     <DropShadowEffect BlurRadius="2" Color="DarkGray" ShadowDepth="3"></DropShadowEffect>
                   </TextBlock.Effect>
                    </TextBlock>
                    <TextBlock Text="節電に関するアンケートにご協力ください。" VerticalAlignment="Center" Height="22"
                           Width="240" Margin="20" />
                </StackPanel>

氏名入力のGcTextBoxコントロールの設定

 最初の入力インターフェイスは氏名を入力してもらいます。これには、GcTextBoxコントロールの文字種設定を「全角文字」以外は受け付けないようにし、ウォーターマークに「全角文字」と設定します。ウォーターマークの文字は透かし文字らしくするために、WatermarkDisplayNullForegroundプロパティを「LightBlue」にします。

<StackPanel Grid.Row="1" Orientation="Horizontal">
    <TextBlock Text="氏名:" VerticalAlignment="Center" Margin="5"  />
    <im:GcTextBox Format="Z" Width="150" WatermarkDisplayNull="全角文字" 
                  WatermarkDisplayNullForeground="LightBlue" Margin="22,0,0,0" />
    <TextBlock Text="例:全角 太郎" Foreground="DarkBlue" VerticalAlignment="Center"
               Margin="5"  />
</StackPanel>

フリガナ入力のGcTextBoxコントロールの設定

 氏名のフリガナを全角のカタカナで入力してもらうために、GcTextBoxコントロールの文字種設定を「全角カタカナ」以外は受け付けないようにし、ウォーターマークも設定します。これで、このGcTextBoxコントロールは全角カタカナしか入力出来なくなりますが、全角のひらがなや半角のカタカナを入力すると自動的に全角のカタカナに変換してくれます。

<StackPanel Grid.Row="2" Orientation="Horizontal">
    <TextBlock Text="フリガナ:" VerticalAlignment="Center" Margin="5"  />
    <im:GcTextBox Format="K" Width="150" WatermarkDisplayNull="全角カタカナ" 
                  WatermarkDisplayNullForeground="LightBlue" />
    <TextBlock Text="例:ゼンカク タロウ" Foreground="DarkBlue" VerticalAlignment="Center"
               Margin="5"  />
</StackPanel>
全角のひらがなを入力すると
全角のひらがなを入力すると
全角のカタカナに変換してくれる
全角のカタカナに変換してくれる

郵便番号入力のGcTextBoxコントロールの設定

 郵便番号入力は、ハイフンを除いた7桁の半角数字しか受け付けないように、Formatプロパティを設定します。また、「MaxLength」プロパティを「7」に設定し、7文字以上入力出来ないように文字数の制限をかけます。文字数のカウント方法は「MaxLengthUnit」プロパティを「Char」に設定します。これで、このGcTextBoxコントロールは半角数字を7文字までしか受け付けないようになります。

 また、ここでもウォーターマークを設定しておきます。

<StackPanel Grid.Row="3" Orientation="Horizontal">
    <TextBlock Text="郵便番号:" VerticalAlignment="Center" Margin="5"  />
    <im:GcTextBox Format="9" Width="70" WatermarkDisplayNull="半角数字" 
                  WatermarkDisplayNullForeground="LightBlue" MaxLength="7" MaxLengthUnit="Char" />
    <TextBlock Text="例:0000000 (ハイフンを除く)" Foreground="DarkBlue" VerticalAlignment="Center"
               Margin="5"  />
</StackPanel>

住所入力のGcTextBoxコントロールの設定

 このGcTextBoxコントロールではウォーターマーク以外に、長い住所が入力された場合に備えて省略表示とオーバーフロ-チップを設定します。省略表示は入力の最後尾を省略し、省略文字はデフォルトの「...」を使用します。

<StackPanel Grid.Row="4" Orientation="Horizontal">
    <TextBlock Text="住所:" VerticalAlignment="Center" Margin="5"  />
    <im:GcTextBox Format="Z" Width="232" WatermarkDisplayNull="全角文字" 
                  WatermarkDisplayNullForeground="LightBlue" ShowOverflowTip="True"
                  Ellipsis="EllipsisEnd" Margin="22,0,0,0" />
</StackPanel>

 これで出来上がりです。

まとめ

 入力フォームを作成する場合は、とにかく入力データのチェックに神経を使いますが、入力時点でデータをきちんと管理できていれば、エラートラップに苦労する必要はありません。

 GcTextBoxコントロールは、多彩な文字種設定で入力値に制限をかけられるので、エラー処理のルーチンが不要になるといっても過言ではありません。

 また、文字種の自動変換や省略表示、オーバーフローチップなどほとんどの機能がXAMLの設定だけで行えるので、ビハインドコードを書かずに済む点も開発効率の向上に貢献しているといえます。

参考文献

製品情報

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(InputMan)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6004 2011/06/27 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング