[ストアアプリ][入門] Step25. TextBoxコントロールを使用する ~ テキストの表示と取得 ~

テキストを入力するためのコントロールはなんと言ってもTextBoxコントロールでしょう。

今回は基本的な使い方について説明します。


 テキストを表示する

まずは XAMLからテキストを表示してみましょう。

テキストを表示するには Textプロパティを使用します。

「Hello Store App」を表示するには以下のようにします。

XAMLの例

<TextBox HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top"
         Text="Hello Store App" />

「Hello Store App」を表示する例

 

今度はコードからテキストを表示してみましょう。

テキストを表示する対象が分かるように、TextBoxコントロールに名前を付けます。

名前は x:Name属性に設定します。今回は txtGreetingとします。

XAMLの例

<TextBox x:Name="txtGreeting" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Text="" />

Loadedイベントのタイミングで「Hello!」と表示するには以下のようにします。

VBの例

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

    'TextBoxに Hello! を表示する
    txtGreeting.Text = "Hello!!"

End Sub

C#の例

private void Page_Loaded(object sender, RoutedEventArgs e)
{
    // TextBoxに Hello! を表示する
    txtGreeting.Text = "Hello!";
}

入力されたテキストを取得する

さきほどは、Textプロパティに値を代入しましたが、今度は逆に取得を行います。

テキストを取得するには、Textプロパティを参照します。

ボタンがクリックされたときに TextBoxからTextを取得してメッセージダイアログに表示する例を以下に示します。

VBの例

Private Async Sub Button_Click(sender As Object, e As RoutedEventArgs)

    ' テキストを取得する
    Dim msg = txtGreeting.Text

    Dim md = New MessageDialog(msg)
    Await md.ShowAsync()

End Sub

C#の例

private async void Button_Click(object sender, RoutedEventArgs e)
{
    // テキストを取得する
    var msg = txtGreeting.Text;

    MessageDialog md = new MessageDialog(msg);
    await md.ShowAsync();
}

[ストアアプリ][入門] Step23. RadioButtonコントロールを使用する ~ 基礎編 ~

今回はラジオボタンコントロールを使ってみましょう。

ラジオボタンコントロールは複数の選択肢から1つの項目を選択するコントロールです。

まずは、MainPage.xamlに2つのRadioButtonコントロールを配置してみましょう。

RadioButtonコントロールを配置


表示されているテキストを変更する

次に、表示されているテキストを変更します。

表示されているテキストの変更は Content プロパティで行います。

上の方を「C#」に、下の方を「VB」にしてみましょう。

XAMLの例

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <RadioButton Content="C#" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="41,45,0,0"/>
    <RadioButton Content="VB" HorizontalAlignment="Left" Margin="41,76,0,0" VerticalAlignment="Top"/>
</Grid>

表示されている文字をC#とVBに変更


チェック状態を変更する

今度は最初から「C#」の方がチェックされている状態にしてみましょう。

チェック状態にするには IsChecked プロパティに True をセットします(逆にチェックを外す場合はFalseをセットします)。

XAMLの例

<RadioButton Content="C#" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="41,45,0,0"
             IsChecked="True"/>

チェック状態にする

 


チェック状態が変更されたことを知る

どのRadioButtonコントロールが変更されたのかを知るために、最初に各ラジオボタンに名前を付けておきましょう。名前は x:Nameで指定します。

C#の方をrdoCS, VBの方をrdoVBとしておきます。

XAMLの例

<RadioButton x:Name="rdoCS" Content="C#" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="41,45,0,0"
             IsChecked="True" Checked="RadioButton_Checked"/>
<RadioButton x:Name="rdoVB" HorizontalAlignment="Left" Margin="41,76,0,0" VerticalAlignment="Top"/>

次に、チェック状態が変更されたことを知るには Checked イベントを使用します。

Checkedイベント

VBの例

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

    'C# のラジオボタンがチェック状態か
    If rdoCS.IsChecked = True Then

    End If

End Sub

C#の例

private void RadioButton_Checked(object sender, RoutedEventArgs e)
{
    // C# のラジオボタンがチェック状態か
    if ( rdoCS.IsChecked == true )
    {

    }
}

[log4net] ログをファイルに出力する ~日付とサイズでログファイルを分ける~

上記の記事で、ファイルサイズでログを分ける方法と日付でログのバックアップを取る方法について説明しました。
今回は上記2つをミックスしてログを作成する方法について説明します。

Appender は上記2つの記事同様 log4net.Appender.RollingFileAppender を使用します。

App.configの例を以下に示します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>

  <log4net>
    <!-- 日付とサイズでRollingするファイルAppenderの例 -->
    <appender name="DaySizeRollingLogToFile" type="log4net.Appender.RollingFileAppender">
      <!-- ログ・ファイル名 -->
      <File value="C:\Work\MyLog.log" />
      <!-- 追加書き込み -->
      <appendToFile value="true" />
      <!-- 日付ごとにファイルを作成することを指定 -->
      <rollingStyle value="Composite" />
      <!-- ログ・ファイル名を固定にするため“true”を指定 -->
      <staticLogFileName value="true" />
      <!-- ファイルサイズの上限 -->
      <maximumFileSize value="10KB" />
      <!-- 最大バックアップファイル数 -->
      <maxSizeRollBackups value="5" />
      
      <!-- ファイル名の日付部分 -->
      <datePattern value='"."yyyyMMdd".log"' />

      <layout type="log4net.Layout.PatternLayout">
        <!-- ログの書式 -->
        <conversionPattern value="%d[%t] %p - %m%n"/>
      </layout>
    </appender>

    
    <root>
      <!-- すべてのログを出力したい場合 -->
      
      <level value="All" />
      <!-- どのログ出力先を使用するか -->
      <appender-ref ref="DaySizeRollingLogToFile" />
    </root>
  </log4net>
</configuration>

今回のキモは、<rollingStyle>タグのvalueタグに Composite を指定しているところです(15行目)。
これにより、ログファイルは指定したファイルサイズを超えるとバックアップを取って新しくログファイルを作成します。
また、日付が変わってログが出力されるときも新しくログファイルが作成されるようになります。

<rollingStyle>以外のタグについては、冒頭で示した2つの記事で解説済みですので参考にしてください。

今回の設定によるログファイルの作成例を以下に示します。

実行例