28章:10 行でズバリ!! [C#] コントロール間の連携

    作成2013.04.21

     Silverlight アプリケーションとWPFアプリケーションのコードは完全互換ではなさそうですが、わずかな修正でSilverlight アプリケーション用サンプルコードをWPFアプリケーション用コードに変換できます。
     ここでは、Silverlight アプリケーション用サンプルコードをWPFアプリケーション用コードに変換します。
     10 行でズバリ!! [C#] マウス イベントの制御は下記の参照元情報から作成方法の説明と解説を参照できます。

  1. 参照元情報
     10 行でズバリ!! [C#] コントロール間の連携
    「10 行でズバリ!! [C#] コントロール間の連携」にジャンプする
     作成方法の詳細は上記を参照願います。


  2. 10 行でズバリ!! [C#] コントロール間の連携の完成ファイル
     10 行でズバリ!! [C#] コントロール間の連携の解説とおりに作業を実施すると、C#プロジェクトファイル群が完成しますが、 ここでは、VBで作成したプログラムをC#言語に変換を基本とします。
     完成ファイルは以下からダウンロードできます。
     ダウンロード後は解凍してから使用してください。
      [10 行でズバリ!! [C#] コントロール間の連携]をダウンロードする。
     解凍すると「28Bindings」フォルダーがあります。
    注(1)「28Bindings」フォルダーの「Bindings.sln」ファイルをダブルクリックすると「Express 2012 for Windows Desktop」が起動します。
    注(2)メニューの「ウインド」_「ウインドレイアウトのリセット」で標準に戻ります。
    注(3)「ソリューションエクスプローラ」ウインドウ内の「MainWindow.xaml」をダブルクリックすると「デザイン」が表示されます。
    注(4)メニューの「表示」_「コード」を選択するとコードが表示されます。
    注(5)「ListItems.sln」の動作確認は「デバッグ」_「デバッグ開始」で実行します。デバッグ機能を用いて動作確認を行います。


  3. Bindings.slnの実行
    (1)「Express 2012 for Windows Desktop」のデバッグ機能を使用します。
    (2)「デバッグ」_「デバッグ開始」を選択します。
    (3)操作画面が表示されます。
    (4)スライダーで文字の大きさが変化します。
    (5)クローズボックスで終了します。


  4. 新規プロジェクトの作成
    (1)MainWindow.xamlのデザイン設定
     新規プロジェクトを作成すると「デザイナー」にはMainWindow.xamlが自動生成されます。MainWindow.xamlのデザイン設定はVBのMainWindow.xamlのコピー&ペーストで完成します。

    (2) MainWindow.xaml.csコード
     基本コードが自動生成されます。


  5. MainWindow.xamlの全コード
    <Window x:Class="MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
        <Grid x:Name="LayoutRoot" Background="LightCyan">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <TextBox x:Name="textbox1" Margin="5"
                     Text="スライダーでフォント サイズを変更できます。" />
    
            <Slider Grid.Row="1" x:Name="slider1" Margin="5"
                    Minimum="10" Maximum="60" Value="16" />
            <TextBox Grid.Row="2" x:Name="textbox2" Margin="5" Text="Green" />
            <TextBlock Grid.Row="3"  Name="textblock1" Text="TextBlock" 
                       Foreground="{Binding ElementName=textBox2, Path=Text}" />
        </Grid>
    </Window>
    


  6. MainWindow.xamlコードの解説
    (1)VB とC#は同一となります。
    (2)<TextBlock Grid.Row="3" x:Name="textblock1" Margin="5"
    VerticalAlignment="Top"
    TextWrapping="Wrap"
    Text="{Binding ElementName=textbox1, Path=Text}"
    FontSize="{Binding ElementName=slider1, Path=Value}"
    Foreground="{Binding ElementName=textbox2, Path=Text,
    Converter={StaticResource stringBrushConverter}}" />
    を <TextBlock Grid.Row="3" Name="textblock1" Text="TextBlock"
    Foreground="{Binding ElementName=textBox2, Path=Text}" />に変更しました。


  7. MainWindow.xaml.csの全コード
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Media;
    using System.Reflection;
    namespace Bindings
    {
        public partial class MainWindow : Window
        {
            TextBlock textblock0 =new TextBlock();
            public MainWindow()
            {
                InitializeComponent();
            }
            private void textbox1_TextChanged(object sender, TextChangedEventArgs e)
            {
                textblock0.Text = textbox1.Text;
            }
            private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
            {
                textblock0.FontSize = slider1.Value;
            }
            private void textbox2_TextChanged(object sender, TextChangedEventArgs e)
            {
                PropertyInfo pinfo = typeof(Colors).GetProperty(textbox2.Text);
                Color c;
                if (pinfo == null)
                {
                    c = Colors.Red;
                }
                else
                {
                    c =(Color) pinfo.GetValue(null, null);
                }
                textblock0.Foreground = new SolidColorBrush(c);
            }
            private void textblock1_Loaded(object sender, RoutedEventArgs e)
            {
                textblock0 = textblock1;
            }
        }
    }


  8. MainWindow.xaml.csコードの解説
    (1)TextBlock textblock0 =new TextBlock();は変数textblock0をTextBlock型で生成します。
    (2)private void textblock1_Loaded()で変数textblock0にtextblock1の実体を代入します。
    (3)private void textbox1_TextChanged()でtextblock1=textblock0にtextbox1.Text文字を代入します。
    (4)private void slider1_ValueChanged()でスライダーの値を文字サイズに代入します。
    (5)private void textbox2_TextChanged()で文字の色を変更します。


    感想:
    (1)VBからC#への変換は簡単でした。







29章:10 行でズバリ!! [C#] ファイルのドラッグ アンド ドロップに行く。

トップページに戻る。