今回はWindowsフォームアプリケーション作成の第3回として、ユーザーがフォームを操作したときに実行されるイベント処理を実装していきたいと思います。
実際にプログラムの作成に入る前に、以下の記事で解説しているフォーム作成までの手順を行ってください。
作成するアプリケーション
今回作成するWindowsフォームアプリケーションは以下のような画面となります。
ユーザーが名前の入力欄に文字列を入力し、決定ボタンをクリックすると、入力された文字列を表示するメッセージボックスが開くというものです。
ボタンクリック時のイベントで実行されるプログラムの記述方法について解説していきます。
各コントロールのID(Name)を設定する
作成したプログラムからフォーム上のコントロールにアクセスするためには、コントロールのID(プロパティのName)が必要になります。
まずはButtonコントロールをクリックしてコントロールが選択された状態にしてください。
続いて画面右下のプロパティを確認してください。
プロパティ一覧を上にスクロールすると「デザイン」の項目に「(Name)」という項目があります。これがコントロールのIDで一意の名前を付ける必要があります(複数のコントロールに同じ名前は付けられません)
今回は「btnDecide」という名前にしました。
同様にTextBoxも「txtName」と変更してください。
これでプロパティの設定は完了です。
設定したID名をプログラムから指定することで、各コントロールにアクセスすることができます。
イベント処理関数を生成する
続いてコントロールに対して発生したイベントで実行するための関数を作成していきます。
フォーム上の「決定」ボタンをダブルクリックしてみてください。
以下のように「Form1.cs」というこのフォームに対応したソースファイルに「btnDecide_Click」という関数が自動生成されました。
ボタンのクリック時にこの関数が呼ばれますので、ユーザーがボタンをクリックしたら処理したい内容をここに書いておけば実行されます。
イベント処理の中身を実装する
さて、ここからは実際にC#でプログラムを記述していきましょう。
今回作成するプログラムでは、決定ボタンがクリックされた際、テキストボックスに入力されている文字列を取得して、メッセージボックスに表示するというものです。
テキストボックスの文字列を取得する
まずはテキストボックスに入力された文字列を取得します。
テキストボックスの値を取得するには、先ほど設定したIDを使ってコントロールにアクセスします。
name = txtName.Text;
TextBoxコントロールの「Text」というプロパティにアクセスすることで、入力された文字列を取得できます。
取得した値を格納する「name」という変数はstring型です。
テキストボックスの文字列が空文字かを判別する
続いて取得した文字列が空文字化を判別します。
Null、空文字、空白かを判別するにはstringクラスの「IsNullOrWhiteSpace」メソッドを使用します。
if (!string.IsNullOrWhiteSpace(name))
IsNullOrWhiteSpaceはNull、空文字、空白だと戻り値としてTrueを返します。
戻り値によって文字列が正しく入力されていれば正常処理、そうでない場合はエラー処理を実行するようにプログラムを記述します。
メッセージボックスを表示する
メッセージボックスを表示するにはMessageBoxクラスの「Show」メソッドを使用します。
MessageBox.Show(txtbox_message, "入力完了", MessageBoxButtons.OK);
第1引数に表示したい文字列、第2引数にウインドウのタイトル、第3引数にメッセージボックスのボタンの種類、第4引数にアイコンの種類(省略可)を指定することができます。
実際に作成したソースコード
Visual Studioが生成したコードも含めたプログラムは以下の通りです。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace test_winform
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnDecide_Click(object sender, EventArgs e)
{
//変数宣言
string name = string.Empty;
string txtbox_message = string.Empty;
//テキストボックスデータ取得
name = txtName.Text;
//ダイアログボックスを表示
if (!string.IsNullOrWhiteSpace(name))
{
//表示する文字列を生成
txtbox_message = "あなたの名前は" + name + "に決定しました。";
//文字列が入力されている場合
MessageBox.Show(txtbox_message, "入力完了", MessageBoxButtons.OK);
}
else
{
//null、空文字、空白の場合
MessageBox.Show("名前が正しく入力されていません", "入力失敗", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
}
}
}
実行結果
プログラムを実行すると以下のようにフォームが表示されます。(プログラムのビルド、実行方法は前回の記事を参照してください)
名前と書かれたラベルの横のテキストボックスに文字列を入力し、決定ボタンを押します。
今回は「たろう」と入力してみました。
結果は以下のように、メッセージボックスの文字列の中に「たろう」が含まれた状態で表示されました。
テキストボックスが空欄のまま決定ボタンを押した場合は以下のようにエラーダイアログが表示されました。
以上のように仕様の通りの動作を実現することができました。
まとめ
今回はユーザーがフォームを操作した際に実行されるイベント処理を実装してみました。面倒なアプリケーションの初期化やフォームの表示処理は.NET frameworkが自動的に生成してくれるので、非常に簡単にアプリケーションを構築できたのが見て頂けたかと思います。
今後の記事でも色々なWindowsフォームアプリケーションの実装テクニックを紹介していく予定です。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。
スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。
それでは、また次の記事でお会いしましょう。
コメント