ページの仕上げとイベント処理
最後に、残りのコントロールを配置して仕上げ、2つのイベント処理を作成します。1つは、GcNumberコントロールの入力値が0以下になった場合は、入札を受け付けないようにButtonコントロールを無効にします。
Imports GrapeCity.Windows.InputMan Class MainWindow Private Sub GcNumber1_ValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) If Me.GcNumber1.Value <= 0 Then Me.Button1.IsEnabled = False Else Me.Button1.IsEnabled = True End If End Sub
using GrapeCity.Windows.InputMan; namespace WpfApp_GcNumber_cs { public partial class MainWindow : Window { private void GcNumber1_ValueChanged(object sender, RoutedEventArgs e) { if (GcNumber1.Value <= 0) { Button1.IsEnabled = false; } else { Button1.IsEnabled = true; } }
もう1つは、入札金額をTextBlockに反映させる処理です。これは、メッセージボックスで確認を取ってから実行します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Dim ret As MessageBoxResult ret = MessageBox.Show("この金額で入札を受け付けます。", "入札確認", MessageBoxButton.OKCancel, MessageBoxImage.Question) If ret = MessageBoxResult.OK Then Me.TextBlock4.Text = "現在価格:" + Me.GcNumber1.Value.ToString() + "円" End If End Sub End Class
private void Button1_Click(object sender, RoutedEventArgs e) { MessageBoxResult ret; ret = MessageBox.Show("この金額で入札を受け付けます。", "入札確認", MessageBoxButton.OKCancel, MessageBoxImage.Question); if(ret == MessageBoxResult.OK) { TextBlock4.Text = "現在価格:" + GcNumber1.Value.ToString() + "円"; } } } }
以上で、できあがりです。
<Grid Height="335" Width="573"> <my:GcNumber Name="GcNumber1" Margin="0,276,155,33" Value="100" SpinIncrement="100" MaxValue="100000000" MinValue="-1000" HorizontalAlignment="Right" Background="{x:Null}" Width="203" WatermarkZero="" AllowDropDownOpen="True" DropDownButtonVisibility="ShowAlways" ValueChanged="GcNumber1_ValueChanged" UseLayoutRounding="True"> <im:GcNumber.FieldSet> <im:NumberFieldSet> <im:NumberFieldSet.DecimalPart> <im:NumberDecimalPartField MaxDigits="0" /> </im:NumberFieldSet.DecimalPart> <im:NumberFieldSet.DecimalSeparator> <im:NumberDecimalSeparatorField /> </im:NumberFieldSet.DecimalSeparator> <im:NumberFieldSet.IntegerPart> <im:NumberIntegerPartField MaxDigits="9" MinDigits="0"> <im:NumberIntegerPartField.GroupSizes> <im:IntegerItem Value="3" /> </im:NumberIntegerPartField.GroupSizes> </im:NumberIntegerPartField> </im:NumberFieldSet.IntegerPart> <im:NumberFieldSet.SignPrefix> <im:NumberSignPrefixField NegativePattern="金額エラー -" PositivePattern="入札価格: " Foreground="Chocolate" HorizontalAlignment="Left" /> </im:NumberFieldSet.SignPrefix> <im:NumberFieldSet.SignSuffix> <im:NumberSignSuffixField NegativePattern="" PositivePattern=" 円(税込)" Foreground="Chocolate" /> </im:NumberFieldSet.SignSuffix> </im:NumberFieldSet> </im:GcNumber.FieldSet> </my:GcNumber> <Image Height="122" HorizontalAlignment="Left" Margin="51,148,0,0" Name="Image1" Stretch="Fill" VerticalAlignment="Top" Width="153" Source="/WpfApplication1;component/Images/flower.jpg" /> <TextBlock Height="24" HorizontalAlignment="Right" Margin="0,118,84,0" Name="TextBlock1" Text="激レア! 2011年新作 一品限り 雪割草" VerticalAlignment="Top" Width="438" TextWrapping="Wrap" Foreground="#FF2D56DB" FontStyle="Normal" FontSize="16" FontFamily="MS Gothic" FontWeight="Bold" /> <TextBlock Height="18" HorizontalAlignment="Left" Margin="226,195,0,0" Name="TextBlock2" Text="開始価格:100円" VerticalAlignment="Top" Width="106" /> <TextBlock Height="18" HorizontalAlignment="Left" Margin="226,219,0,0" Name="TextBlock3" Text="入札単価:100円" VerticalAlignment="Top" Width="106" /> <Button Content="入札する" Height="26" HorizontalAlignment="Left" Margin="430,276,0,0" Name="Button1" VerticalAlignment="Top" Width="119" Click="Button1_Click"/> <Image Height="73" HorizontalAlignment="Left" Margin="104,22,0,0" Name="Image2" Stretch="Fill" VerticalAlignment="Top" Width="284" OpacityMask="{x:Null}" Source="/WpfApplication1;component/Images/logo.jpg" /> <TextBlock Height="18" HorizontalAlignment="Left" Margin="226,243,0,0" Name="TextBlock4" Text="現在価格:100円" VerticalAlignment="Top" Width="106" /> <TextBlock Height="41" HorizontalAlignment="Right" Margin="0,148,112,0" Name="TextBlock5" Text="めったにお目にかかれない逸品!今回を逃したら二度と手に入りません。" TextWrapping="Wrap" VerticalAlignment="Top" Width="235" /> <TextBlock Height="18" HorizontalAlignment="Left" Margin="355,195,0,0" Name="TextBlock6" Text="出品数:1" VerticalAlignment="Top" Width="106" /> <TextBlock Height="18" HorizontalAlignment="Left" Margin="355,219,0,0" Name="TextBlock7" Text="開始日時:2011年8月5日 18:21 " VerticalAlignment="Top" Width="183" /> <TextBlock Height="18" HorizontalAlignment="Left" Margin="355,243,0,0" Name="TextBlock8" Text="終了日時:2011年8月10日 23:59 " VerticalAlignment="Top" Width="194" /> <Grid.Background> <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> <GradientStop Color="#FF00E100" Offset="0" /> <GradientStop Color="#FFB4FFFF" Offset="1" /> </LinearGradientBrush> </Grid.Background> </Grid>
まとめ
GcNumberコントロールは、WPFアプリケーションにボタンで数値を入力できるインターフェイスを提供します。このコントロールは、単純に数値を入力できるだけでなく、数値に書式も設定でき、バラエティに富んだ外観を作成できます。これらの設定は、いずれもプロパティウィンドウを使って作成できるため、XAMLの記述方法を知らなくても簡単に設定できるようになっています。プログラミングの知識のないWebデザイナーでもコントロールを作成できるのは、とても嬉しい機能ですね。
よりユーザーフレンドリーなWPFアプリケーションの作成を考えている方には、お勧めのコントロールです。