Windows8ストアアプリ ユーザコントロール(VB)

VB Tips And Sample(HOME)VBのWindowsストアアプリ入門

ユーザコントロール(VB)

ストアアプリには、まだコントロールの数が少ない印象があります。
WPFでもそうでしたが、IMEがなんだか分かりません。
数字だけ入力可能にするあれです。
通常のテキストコントロールを継承して独自のテキストコントロールを作る?
方法もあるようですが、ある一定の幅がある血圧なので、今回は、数字以外であれば数字に置き換える方法をとってみることに。
プロジェクトエクスプローラで、「プロジェクトを選択」-「右クリック」-「新規追加」
ユーザコントロールを選択して「追加」します。
ユーザコントロールの追加

XAMLで、
<UserControl>
    x:Class="BloodPressure3.MyUserControl1">
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    xmlns:local="using:BloodPressure3">
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008">
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
    mc:Ignorable="d">
    d:DesignHeight="60">
    d:DesignWidth="150">
    
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="1*"/>
        </Grid.RowDefinitions>

        <TextBox x:Name="TextBox1" HorizontalAlignment="Stretch" Text="" VerticalAlignment="Center" HorizontalContentAlignment="Center" Grid.RowSpan="2" MaxLength="3" InputScope="Number" />
        <Button HorizontalAlignment="Stretch" VerticalAlignment="Center" Content="▲" FontSize="7" Grid.Column="1" Click="Button_Click_1" KeyDown="Button_KeyDown_1"/>
        <Button HorizontalAlignment="Stretch" VerticalAlignment="Center" Content="▼" FontSize="7" Grid.Row="1" Grid.Column="1" Click="Button_Click_2"/>
    </Grid>
</UserControl>


画面は以下のようになります。
wpf画面

ソースは

' ユーザー コントロールのアイテム テンプレートについては、http://go.microsoft.com/fwlink/?LinkId=234236 を参照してください

Public NotInheritable Class MyUserControl1
    Inherits UserControl
    Private Number As Char() = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
    'イベントを追加
    Public Event TextBoxChange(sender As Object, e As TextChangedEventArgs)

    Private Sub Button_Click_1(sender As Object, e As RoutedEventArgs)

        If Me.TextBox1.Text.IndexOfAny(Number) >= 0 Then
            Me.TextBox1.Text = (CInt(Me.TextBox1.Text) + 1).ToString
            Value = CInt(Me.TextBox1.Text)
        Else
            Me.TextBox1.Text = "120"
            Value = 120
        End If
    End Sub

    Private Sub Button_Click_2(sender As Object, e As RoutedEventArgs)
        If Me.TextBox1.Text.IndexOfAny(Number) >= 0 Then
            Me.TextBox1.Text = (CInt(Me.TextBox1.Text) - 1).ToString
            Value = CInt(Me.TextBox1.Text)
        Else
            Me.TextBox1.Text = "120"
            Value = 120
        End If
    End Sub
    'プロパティー
    Public Property Value As Integer
        Get
            Return CInt(Me.TextBox1.Text)
        End Get
        Set(value As Integer)
            Me.TextBox1.Text = value
        End Set
    End Property

    Public Property isTextBoxEnabled As Boolean
        Get
            Return TextBox1.IsEnabled
        End Get
        Set(value As Boolean)
            TextBox1.IsEnabled = value
        End Set
    End Property

    Public Property TextBox_Background As SolidColorBrush
        Get
            Return TextBox1.Background
        End Get
        Set(value As SolidColorBrush)
            TextBox1.Background = value
        End Set
    End Property

    Public Property TextBox_Foreground As SolidColorBrush
        Get
            Return TextBox1.Foreground
        End Get
        Set(value As SolidColorBrush)
            TextBox1.Foreground = value
        End Set
    End Property

    Private Sub UserControl_Loaded_1(sender As Object, e As RoutedEventArgs)
        If Me.TextBox1.Text.IndexOfAny(Number) >= 0 Then
            Me.TextBox1.Text = (CInt(Me.TextBox1.Text) - 1).ToString
            Value = CInt(Me.TextBox1.Text)
        Else
            Me.TextBox1.Text = "120"
            Value = 120
        End If

    End Sub

    'イベントを追加
    Private Sub TextBox1_TextChanged(sender As Object, e As TextChangedEventArgs) Handles TextBox1.TextChanged
        RaiseEvent TextBoxChange(sender, e)
    End Sub

  
End Class



「プロジェクト」を右クリック「リビルド」。
左のコントロールの中にユーザコントロールが出てくるので、フォームに貼り付けて使用します。
ユーザコントロールの使用例
VB Tips And Sample(HOME)VBのWindowsストアアプリ入門