SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

.NET Core 3で始めるWPFアプリ開発

.NET Core 3で始めるWPFアプリ開発――Hello, WPF!

.NET Core 3で始めるWPFアプリ開発 第1回

  • X ポスト
  • このエントリーをはてなブックマークに追加

ボタンのイベントハンドラーを設定する

 コントロールのイベントを表す属性にコードビハインドのメソッド名を指定します。すると、コントロールでイベントが発生したときに、そのコードビハインドのメソッドが呼び出されます。このコードビハインドのメソッドをイベントハンドラーと呼びます。

 例えば、ボタンがクリックされるとClickイベントが発生します。そのイベントハンドラーを追加してみましょう。

 まず、XAMLデザイナーで、ボタン要素にClick属性を書きます。「Click=」まで書いたところで、次の画像のようにIntelliSenseが働くはずです。

「Click=」まで書いたところで、新しいイベントハンドラーの作成が提案された
「Click=」まで書いたところで、新しいイベントハンドラーの作成が提案された

 上の状態で[Enter]キーか[Tab]キーを押すと、「Button_Click」という名前でイベントハンドラーが作成されます(次の画像)。

イベントハンドラー「Button_Click」が自動生成された
イベントハンドラー「Button_Click」が自動生成された

 イベントハンドラーを違う名前で作りたいときは、先の状態で[Enter]キー/[Tab]キーを押さずに、イベントハンドラー名をキー入力します。

 ここからはイベントハンドラーにコードを書いていきます。XAMLの属性値Button_Clickの中か直後にカーソルを置いた状態で[F12]キーを押して、コードビハインドにジャンプしましょう(このとき、まだイベントハンドラーが存在しなければ、イベントハンドラーが生成されます)。なお、書くコードが短いときは、[Alt]+[F12]キーを押すとその場に小さいウィンドウが開いてコードビハインドの編集ができます。

 コードビハインド側に自動生成されたイベントハンドラーは、次の画像のようになっています。

コードビハインド側に自動生成されたイベントハンドラー
コードビハインド側に自動生成されたイベントハンドラー

イベントハンドラーにコードを書く

 作成したButton_Clickイベントハンドラーは、ボタンがクリックされたときに呼び出されるものです。ここに、ボタンがクリックされたときにアプリにやらせたい処理を書いていけばよいのです。

 なんでもよいのですが、ここではTextBlockコントロールの表示を現在時刻に変えてみましょう。次のコードのように1行追加します。

イベントハンドラーの中でTextBlockコントロールに現在時刻を表示する(MainWindow.xaml.cs
    private void Button_Click(object sender, RoutedEventArgs e)
    {
      Text1.Text = $"現在時刻は{DateTimeOffset.Now:HH:mm}";
    }

 これで、ボタンをクリックしたときに、TextBlockの表示が現在時刻に変わります。なお、先頭に「$」記号が付いた文字列は文字列補間(または補間文字列)と呼ばれていて、その中の波かっこ「{}」で囲まれた部分の式を評価して文字列に当てはめてくれます(C# 6からの機能)。ちなみに、「補間」とは複数の値からその途中の値を近似計算するという意味の数学用語で、文字列の欠けている部分に当てはめるという意味では「補完」の方がふさわしいです。

 では、デバッグ実行してみましょう。ボタンをクリックすると次の画像のようになります。

ボタンをクリックすると現在時刻が表示される
ボタンをクリックすると現在時刻が表示される

 あ、「現在時刻」というのはおかしいですね。これはクリックしたときの時刻です。ちょっと修正しましょうか。デバッグ実行を続けたまま、イベントハンドラーの先頭にブレークポイントを置きます(次の画像)。ブレークポイントを置きたい行にカーソルを置いてから[F9]キーを押すか、または、ブレークポイントを置きたい行の左端の灰色の部分(次の画像でブレークポイントを示す赤丸が表示されているところ)をマウスでクリックすることで、ブレークポイントを置けます(もういちど同じ操作でブレークポイント解除)。

デバッグ実行中にブレークポイントを置いた
デバッグ実行中にブレークポイントを置いた

 もう一度ボタンをクリックすると、今度はブレークポイントでデバッグ実行が中断します。次のコードのように文字列を書き換えてから、[F5]キーを押してデバッグ実行を再開してみてください。

イベントハンドラーの中でTextBlockコントロールに表示する文字列を修正する(MainWindow.xaml.cs
    private void Button_Click(object sender, RoutedEventArgs e)
    {
      Text1.Text = $"クリックしたのは{DateTimeOffset.Now:HH:mm}";
    }

 その場で修正が反映されて、デバッグ実行が継続されます(次の画像)。

修正したコードでデバッグ実行が継続された
修正したコードでデバッグ実行が継続された

 これは、.NET Framework 4.6からの機能で(.NET Core 3も含まれます)、「エディットコンティニュー」と呼ばれます。簡単な修正なら、このようにデバッグ実行中に書き換えられるのです。継続不可能な修正を加えた場合には、再修正するかデバッグを停止するかを尋ねられます。

 ここまで来れば、あとはどんなコントロールがあってそれをどう使えばいいのかを調べていけば、どんどんWPFのプログラムを作って行けそうですね! "Hello, WPF !"、卒業です。

次のページ
Visual StudioとC#の新機能

関連リンク

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
.NET Core 3で始めるWPFアプリ開発連載記事一覧
この記事の著者

biac(ばいあっく)

HONDA R&Dで自動車の設計をやっていた機械屋さんが、技術の進化スピードに魅かれてプログラマーに。以来30年ほど、より良いコードをどうやったら作れるか、模索の人生。わんくま同盟の勉強会(名古屋)で、よく喋ってたりする。2014/10~2019/6 Microsoft MVP (Windows Devel...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11809 2019/12/23 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング