XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

Similar documents
XAML Do-It-Yourself シリーズ 第 1 回 XAML 概要 -1-

Visual Studio Do-It-Yourself 第 9 回ユーザーコントロール 第 6 回のリソースから第 8 回のテンプレートで さまざまな方法でコントロールをカスタマズできるこ とを学びました 今回のテーマであるユーザーコントロールは 既存の一つのコントロールをカスタマ ズするのではな

Visual Studio Do-It-Yourself シリーズ 第 1 回 Windows ゕプリケーション開発の概要 -1-

XAML Do-It-Yourself シリーズ 第 8 回ゕニメーション -1-

XAML Do-It-Yourself シリーズ 第 7 回テンプレート -1-

XAML Do-It-Yourself シリーズ 第 11 回 2D グラフゖックス -1-

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

WPF アプリケーションの 多言語切替

~ ユーザーインターフェイスの自動テスト ~

Prog2_15th

C#の基本

XAMLDo-It-Yourself 第 2 回. レゕウト 今回は XAML でウゖンドウにパネルやボタン メニューなどの基本的なコントロールを配置する方法を 学びます ここでは 次のことを学習します XAML におけるレゕウトの基本 主要なパネルとその記述方法 XAML (WPF) で利用可能な

HOW DO I WebBrowser コントロールで HTML5 を 使用するには ここでは以下の手順で説明します Video 要素を使用する Silverlight と JavaScript の間でやり取りする Canvas 要素を使用する Video 要素を使用する 1. Visual Stu

Visual Studio Do-It-Yourself シリーズ 第 11 回テーマとスキン

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

Prog2_4th

WPFの初歩の初歩

SharpShooter Reports.WPF 基本的な使い方 Last modified on: November 15, 2012 本ドキュメント内のスクリーンショットは英語表記ですが SharpShooter Reports JP( 日本語版 ) では日本語で表示されます

Prog2_12th

著作権 このドキュメントに記載されている情報は このドキュメントの発行時点におけるマクロソフトの見解を反映したものです マクロソフトは市場の変化に対応する必要があるため このドキュメントの内容に関する責任を問われないものとします また 発行日以降に発表される情報の正確性を保証できません このホワトペ

Abstract Kinect for Windows RGB Kinect for Windows v Kinect for Windows v2

XAML の勉強上要! WPF アプリケーションは作れます

Carousel for WPF/Silverlight

XAML Do-It-Yourself シリーズ 第 12 回 3D グラフィックス -1-

Chart3D for WPF/Silverlight

Visual Studio Do-It-Yourself 第 3 回コントロール 今回は Windows ゕプリケーションのユーザーンターフェスを作成する際に使う基本的なコントロ ールについて学びます ここでは 次のことを学習します 主要なコントロールとその機能 XAML を使ったコントロールの配置

Sparkline for WPF

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

DEMO1 まずはやってみよう アクティビティをダブルクリック 作成 - プロジェクト C# => Workflow CodeActivity をぽとぺ シーケンシャルと ステートマシン それぞれのコ ンソールアプリ あとライブラリがある びっくりマークは足りていないあかし プロパティをみると判別で

PowerPoint プレゼンテーション

図 2 Excel スプレッドシートの世界 のウィンドウ 図 3 Visual Basic の世界 のウィンドウ 図 3 の VBA ウィンドウは 図 2 の Excel ウィンドウのメニューの ツール をクリックし 開か れるプルダウンメニューで マクロ /Visual Basic Editor

VB.NET解説

MISAO with WPF

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

PowerPoint プレゼンテーション

目次 はじめに... 3 システムの必要条件... 3 サンプルアプリケーションの作成... 3 手順 手順 手順 手順 手順 手順 終わりに... 23

グラフィックス 目次

Windows 10 IoT Core MVA 2015 August Windows 10 IoT Core ハンズオントレーニング Building and running Github MS IoT Samples on Windows 10 IoT Core 3 章 UWP アプリの開発 L

Microsoft Word - VB.doc

グラフィックス 目次

PowerPoint プレゼンテーション

C#の基本2 ~プログラムの制御構造~

JavaScript 演習 2 1

Microsoft Word -

Prog2_2nd

第1章 ビジュアルプログラミング入門

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

CodeGear Developer Camp

わさわさとWPF

Prog2_2nd

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

アスペクトの相互作用を解消するアスペクトの提案

Prog2_6th

Prog2_6th

Prog2_2nd

Userコントロール

グラフィックス 目次

目 次 押印ツールによる電子印鑑の押印 Word 編 1 枠内に押印する 3 2 社名の上に重ねて 角印 を押印する 5 3 クリップボード経由で押印する 9 4 印影の角度を変える 13 押印ツールによる電子印鑑の押印 Excel 編 1 ドラッグ & ドロップで押印する 14 2 クリップボード

著 作 権 このドキュメントに 記 載 されている 情 報 は このドキュメントの 発 行 時 点 におけるマクロソフトの 見 解 を 反 映 したものです マクロソフトは 市 場 の 変 化 に 対 応 する 必 要 があるため このドキュメントの 内 容 に 関 する 責 任 を 問 われないも

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

MVP for VB が語る C# 入門

Prog2_5th

D:\Documents\Visual Studio 2015\Projects\MyHomePage 用サンプル \ExcelAndWord\ExcelAndWord\MainForm.cs 1 /* */ Excel や Word とやりとりする ~9,20 仕様 Excel

Prog2_6th

2 / 26 平成 26 年 4 月 11 日 ( 金 ) 午後 1 時 9 分 Visual C Express の使用法 ( 東海大学理学部物理学科 ) 無償で利用できる開発環境 (Windows XP 以降 ) Visual Studio 2010 Express

Microsoft PowerPoint - OOP.pptx

ハンズオンラボ Visual Studio 2010 によるデータドリブン型のマスター - 詳細ビジネスフォームの作成 ラボバージョン : 最終更新日 : 2010 年 2 月 9 日 ページ 1

ホームページ・ビルダー16

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

Prog1_10th

PowerPoint プレゼンテーション

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

Android から Windows Phone へ 10 の基本タスク 英語版公開日 : 2011 年 10 月 5 日 ( 水 ) 10:09:24 AM Windows Phone Interoperability サイトは さまざまなスマートフォンプラットフォーム向けにアプリケーションを開発

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

WPF アプリケーションの 多言語切替

問題 1 次の文章は Access データベース およびデータベースの概要について述べたものである にあてはまる適切なものを解答群 { } より選び その記号で答えよ 設問 1. Microsoft Access 2007 データベースのテーブルでは 表す としてデータを { ア. レコードを列 フ

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

プログラミング基礎I(再)

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

FileExplorer for ASP.NET Web Forms

Microsoft PowerPoint - chap10_OOP.ppt

このドキュメントに記載されている情報 (URL 等のンターネット Web サトに関する情報を含む ) は 将来予告なしに変更することがあります このドキュメントに記載された内容は情報提供のみを目的としており 明示または黙示に関わらず これらの情報についてマクロソフトはいかなる責任も負わないものとしま

untitled

テスト 1/7 ページ プレポスト Visual Studio による Windows アプリの開発 ( 基礎編 ) 受講日程受講番号氏名 1.NET Framework に関する記述で 誤っているものを選びなさい 1..NET Framework に含まれる CLR は プログラミング言語に依存し

.NET_3.5 Technical Briefing ソースコード説明 担当者の Demo 実施時の環境 注意 Visual Studio 2008β2 日本語版および Microsoft Silverlight Tools Alpha for Visual Studio 2008 Beta 2

目次 更新履歴... 1 画面設計書の目的... 3 必要な内容... 3 画面一覧... 4 必要な内容... 4 画面遷移... 5 画面レイアウト... 6 入力パラメータ... 7 必要な内容... 7 項目定義... 8 必要な内容... 8 部品の種類... 9 ( 参考 ) 部品指定と

PowerPoint プレゼンテーション

スライド 1

Prog1_6th

PowerPoint プレゼンテーション

intra-mart Accel Platform

スライド 1

TestDesign for Web

1. 画面拡大ショートカット ショートカットキーで作業効率 UP [Ctrl]+[+]: 拡大 [Ctrl]+[-]: 縮小 [Ctrl]+ 0 : デフォルトに戻す (100%) オンライン製品ヘルプ 2

プレポスト【問題】

著作権 このドキュメントに記載されている情報は このドキュメントの発行時点におけるマクロソフトの見解を反映したものです マクロソフトは市場の変化に対応する必要があるため このドキュメントの内容に関する責任を問われないものとします また 発行日以降に発表される情報の正確性を保証できません このホワトペ

Autodesk Revit Structure 2014

Transcription:

XAML Do-It-Yourself シリーズ 第 3 回ベントとトリガー -1-

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述することで ゕプリケーションのユーザーンターフェスを実現していました XAML を用いる WPF ゕプリケーションでも同様に ユーザーの操作などによって発生するベントの処理を C# や Visual Basic などのプログラミング言語で記述します ( 本書では プログラミング言語に C# を用いています ) 今回は主にベントについて 次のことを学習します XAML フゔルとクラス ( ソースフゔル ) の対応付け ベントの設定とベントハンドラーの記述 ベントルーテゖングの利用 トリガーによるベント処理 イベント XAML により記述したコントロールで発生するベントをプログラミング言語で処理するには まず XAML フゔルと それに対応するベントハンドラーが記述されたクラス ( ソースフゔル ) を対応付けておく必要があります このようなソースフゔルは ASP.NET と同様 コードビハンドフゔルと呼ばれます XAML ファイルとコードビハインドファイルをマッピングここではまず ベントハンドラーが記述されたクラスを作成します そして XAML のルート要素 (<Window> 要素 ) に XAML の名前空間を表すプレフゖックス ("x:") を付けた x:class 属性を記述し 属性の値として そのクラス名 ( 名前空間を含む ) を記述します 例えば 作成中の XAML フゔルに対応する MainWindow.xaml.cs というフゔルを作成し 次のような名前空間とクラスの定義を行います Visual Studio 2010 を使って WPF ゕプリケーションのテンプレートからプロジェクトを作成した場合は ベントハンドラーを記述するソースフゔル (MainWindow.xaml.cs など ) はすでに作成されています namespace WpfApplication public partial class MainWindow : Window 続いて 対応する XAML フゔルの <Window> 要素に x:class 属性を追加します 属性の値には 名前空間を含む C# のクラス名を記述します -2-

<Window x:class="wpfapplication.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"> これは <Window> 要素で定義するウゖンドウが "WpfApplication.MainWindow" というクラスに対応することを示しています フゔル名はここには記述しませんが XAML フゔルを上記のクラスが定義されたソースフゔルとともにビルドすることで これらが対応付けされます ビルド時に x:class 属性が示すクラスが存在しない場合はビルドエラーとなります Visual Studio 2010 で WPF ゕプリケーションプロジェクトを作成した場合は x:class 属性はすでに作成されています 次の画面は Visual Studio 2010 でのコードビハンドフゔルを編集しているところです ソリューションエクスプローラーには XAML フゔルに対応するコードビハンドフゔルがツリー状に表示されます イベントハンドラーの指定次に ベント処理を行いたいコントロールで ベントハンドラーの指定を行います ベントハンドラーの指定は ベント名を表す属性を記述し その値にベントハンドラー名 ( メソッド名 ) を記述します たとえば ボタンがクリックされた際にベントハンドラーである OnClick メソッドが実行されるよう にするには 次のように Click 属性を記述します -3-

<Window x:class="wpfapplication.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="120" Width="180"> <Grid> <Button Width="100" Height="40" Name="button1" Click="OnClick">Button</Button> </Grid> </Window> これにより ボタンがクリックされると <Window> 要素の x:class 属性で指定したクラスにある OnClick メソッドが呼び出されます 一方 ベントハンドラーである OnClick メソッドは 次のように記述します private void OnClick(object sender, RoutedEventArgs e) MessageBox.Show(" クリックしました "); これにより ボタンが押されるとメッセージボックスが表示されます イベントハンドラーのパラメーター ベントハンドラーは 通常 2 つのパラメーターをとります 1 つは object 型のパラメーターで も う 1 つは RoutedEventArgs 型のパラメーターです private void OnClick(object sender, RoutedEventArgs e) MessageBox.Show(" クリックしました "); -4-

sender は ベントハンドラーを呼び出したオブジェクトを示します この例では sender は Button コントロールの button1 です 2 番目のパラメーターの RoutedEventArgs オブジェクトには 後述するベントのルーテゖングを含め たベント情報が含まれています これには ベントが発生した大本のオブジェクト コントロールが ネストしている場合にベントの伝搬を続けるかどうかを指定するプロパテゖなどが含まれます なお 2 番目のパラメーターの型はベントの種類によって変化します たとえばキーが押された場合の ベントハンドラーでは 2 番目のパラメーターは 押されたキーの情報を含んだ KeyEventArgs 型の オブジェクトとなります <Button KeyDown="OnKeyDown">Button</Button> この場合のベントハンドラーを 次のように定義します private void OnKeyDown(object sender, KeyEventArgs e) MessageBox.Show(e.Key + " が押されました "); コントロールで発生するベントの種類や ベントハンドラーのパラメーターとして渡されるオブジェ クトを確認するには MSDN ラブラリを参照してください イベントのルーティング XAML の構造について説明した際に XAML では要素 ( コントロール ) を階層的に記述することを説明し ました XAML では この階層内のいずれかのコントロールでベントが発生すると その階層のすべて -5-

のコントロールにベントが伝搬します これは ベントルーテゖングと呼ばれる機能です 例えば以下のようなボタンを用意します <Grid> <Button Name="button1" Width="150" Height="100" > <Ellipse Width="50" Name="ellipse1" Stroke="Black" Height="50" Fill="Coral" /> </Button> </Grid> ここでは Grid の中に Button を配置し さらにボタンの文字列の代わりにオレンジ色の円 (Ellipse) を 描画しています ここで 円の内側をマウスでクリックすると Ellipse Button Grid の順番に Click ベントが発生し ます そのため 円がクリックされただけでも Button の Click ベントのベントハンドラーは Click ベントを捉えることができます さらに Button ではなく Grid で Click ベントに対するベントハンドラーを用意しておき この中 でベントが発生したオブジェクトを特定することで ボタンがクリックされたことを判断することも可 能です <Grid Button.Click="OnPanelClicked"> <Button Name="button1" Width="150" Height="100" > <Ellipse Width="50" Name="ellipse1" Stroke="Black" Height="50" Fill="Coral" /> </Button> </Grid> public partial class MainWindow : Window public MainWindow() InitializeComponent(); private void OnPanelClicked(object sender, RoutedEventArgs e) -6-

// ベントが発生したコントロールの名前を表示 MessageBox.Show(((Button)e.Source).Name + " が押されました "); 複数のイベント処理を 1 カ所でまとめて処理する 上記の仕組みを利用して 複数のコントロールで発生するベントを 1 つのベントハンドラーにまと めることもできます 次の例では StackPanel にラジオボタン (RadioButton) を 3 つ配置し すべての RadioButton のク リックを StackPanel で処理しています <StackPanel RadioButton.Click="OnClicked"> <RadioButton Name="radioButton1" >RadioButton1</RadioButton> <RadioButton Name="radioButton2" >RadioButton2</RadioButton> <RadioButton Name="radioButton3" >RadioButton3</RadioButton> </StackPanel> StackPanel に設定したベントハンドラーでは ベントの発生元 (e.source) の Name プロパテゖ を参照することにより どの RadioButton が押されたのかを判別します public void OnClicked(object sender, RoutedEventArgs e) RadioButton btn = (RadioButton)e.Source; MessageBox.Show(btn.Name + " がクリックされました "); コマンドを利用する ベントハンドラーを用いてベント処理を実装する方法に加えて コマンド (Command) と呼ばれる -7-

機能を用いてベント処理を行うことも可能です WPF ではフゔルのオープンやクローズ コピー ペ ーストといった汎用的な処理がコマンドとして用意されています これらのコマンドに対応したコントロ ールでは コマンドを利用することで プログラミングの手間を省くことができます 例として クリップボードのコピーおよびペースト ( 貼り付け ) 処理を挙げます メニュー項目に [ コピ ー ] と [ ペースト ] の項目を作成します その際にベントハンドラーを指定するのではなく "Command" 属性を指定します コマンドの内容は コピーのメニュー項目には "ApplicationCommands.Copy" を ペーストのメニュー 項目には "ApplicationCommands.Paste" を指定します さらに <TextBox> 要素を配置して文字列の 入力を可能にしておきます <Window x:class="wpfapplication.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="200" Width="300"> <DockPanel> <Menu DockPanel.Dock="Top"> <MenuItem Command="ApplicationCommands.Copy"/> <MenuItem Command="ApplicationCommands.Paste"/> </Menu> <TextBox> コピー & ペーストしてください </TextBox> </DockPanel> </Window> リスト 3-2 コマンドを使ったメニュー これを実行して ウゖンドウに表示されている文字列を選択した後 メニューから [ コピー ] そして [ ペ ースト ] を選択すると コピーした文字列がテキストボックスに追加されるのを確認できます このようにコマンドを利用することで 汎用的な処理を WPF のフレームワークに任せてしまうこともで きます -8-

トリガー今回説明したとおり ベントは ユーザーの操作やゕプリケーションの状態の変化を受けて プログラミング言語で記述されたロジックを実行するためのものです XAML ではこれに似た機能として トリガー があります トリガーを用いると コードを記述することなく ベントの発生時にゕプリケーションの表示内容を変更できます トリガーは テンプレートまたはスタルでのみ使用できる機能です テンプレートおよびスタルにつ いては まだ紹介していませんので ここではトリガーによって実現できる一例を紹介するにとどめます 詳細は スタル の回で説明します 例として ボタンの上にマウスが移動した際に ボタンの高さを変える記述を示します <Window x:class="wpfapplication.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="200" Width="300"> <Window.Resources> <Style TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Trigger.Setters> <Setter Property = "Height" Value="40"/> </Trigger.Setters> </Trigger> </Style.Triggers> </Style> </Window.Resources> <StackPanel> <Button Width="120"> 高さが変化します </Button> </StackPanel> </Window> リスト 3-3 トリガーを用いたベント処理 実行して マウスをボタンの上に移動すると ボタンの高さが変化するのを確認できます -9-

まとめ今回はベントについて紹介しました ウゖンドウにコントロールを配置し プログラミング言語でベント処理を記述するスタルは これまでのプログラミングとそれほど変わらないため 容易に理解できたのではないでしょうか 次回はデータバンデゖングを用いて XML フゔルやデータベースの内容をコントロールに表示する方 法を学習します -10-