C#の言語仕様については、とりあえず置いて、そろそろプログラムを作ってみましょう。
Hellow Worldのように、表示しておしまい、じゃぁつまらないし、あまり役にもたたな
いので、ユーザーが入力した値を元に、足し算を行うプログラムを作ってみます。
非常に単純なプログラムですが、ユーザーの入力と、イベントの駆動という基本中の基
本を学ぶことの出来るプログラムです。
Hellow Worldのように、表示しておしまい、じゃぁつまらないし、あまり役にもたたな
いので、ユーザーが入力した値を元に、足し算を行うプログラムを作ってみます。
非常に単純なプログラムですが、ユーザーの入力と、イベントの駆動という基本中の基
本を学ぶことの出来るプログラムです。
まず、Hellow Worldのときと同じように、新しいプロジェクトを作成してください。
デザインタブで、ツールボックスからTextBoxを選択し、フォームに貼り付けてください。
これを2回繰り返します。
つまり、TextBoxを3個貼り付けることになります。
場所は何処でもかまいませんが、二つは数値を入力するTextBoxで、もう一つは答えを
表示するTextBoxになります。
使いやすい位置に貼り付けましょう。ここら辺はセンスというか、趣味というか、そう
いうものがでます。
次に、ツールボックスからButtonを選択し、フォームに貼り付けてください。
これも使いやすい位置におきましょう。
デザインタブで、ツールボックスからTextBoxを選択し、フォームに貼り付けてください。
これを2回繰り返します。
つまり、TextBoxを3個貼り付けることになります。
場所は何処でもかまいませんが、二つは数値を入力するTextBoxで、もう一つは答えを
表示するTextBoxになります。
使いやすい位置に貼り付けましょう。ここら辺はセンスというか、趣味というか、そう
いうものがでます。
次に、ツールボックスからButtonを選択し、フォームに貼り付けてください。
これも使いやすい位置におきましょう。
このボタンを右クリックし、プロパティを選択してください。
ボタンのプロパティをエディットできるウィンドウに移動またはウィンドウが開くので、
このなかのTextを「計算」等に変えてください。ボタンに表示される文字が変わります。
次に、Buttonをダブルクリックします。
すると、エディタタブに移動し、Buttonがクリックされたときに実行されるメソッドを
作成してくれます(もう少し正確に書くと、クリックイベントに対応したメソッドを作
成します)
button1_Clickという名前になっていると思いますが、ここに処理を書きます。
以下は例です。
そのまま打っても動きますが、あんまり綺麗なコードではないですね。
素直ではありますけど。
ボタンのプロパティをエディットできるウィンドウに移動またはウィンドウが開くので、
このなかのTextを「計算」等に変えてください。ボタンに表示される文字が変わります。
次に、Buttonをダブルクリックします。
すると、エディタタブに移動し、Buttonがクリックされたときに実行されるメソッドを
作成してくれます(もう少し正確に書くと、クリックイベントに対応したメソッドを作
成します)
button1_Clickという名前になっていると思いますが、ここに処理を書きます。
以下は例です。
そのまま打っても動きますが、あんまり綺麗なコードではないですね。
素直ではありますけど。
private void button1_Click(object sender, EventArgs e)
{
int x, y, z;
x = Convert.ToInt32(textBox1.Text);
y = Convert.ToInt32(textBox2.Text);
z = x + y;
textBox3.Text = z.ToString();
}
Convert.ToInt32というのは、文字列型を32Bitのint型に変換するメソッドです。
ToInt32がメソッドで、Convertというのはその名の通り、変換用のクラスです。
何でインスタンス化していないのにメソッドが使えるのだろうという疑問がでたなら、
良い傾向です。
実はConvertクラスは静的クラスのため、インスタンスなしにメソッドを使えます。
まぁ、疑問に思わなくても、使えるんだ程度でも良いですけどね。今のところは。
ToInt32がメソッドで、Convertというのはその名の通り、変換用のクラスです。
何でインスタンス化していないのにメソッドが使えるのだろうという疑問がでたなら、
良い傾向です。
実はConvertクラスは静的クラスのため、インスタンスなしにメソッドを使えます。
まぁ、疑問に思わなくても、使えるんだ程度でも良いですけどね。今のところは。
さて、実のところ足し算プログラムを作りましょう!
という課題を出して、上の例の通りに作ってきた場合、ほぼ間違いなくNGを出されます。
少なくとも私なら出します。
何故でしょう?
それは、NGケースを全く考慮していない為です。
たとえば、何も入力されていない状態でボタンがクリックされた場合は?
数値以外がTextBoxに入力されている状態でボタンがクリックされた場合は?
という課題を出して、上の例の通りに作ってきた場合、ほぼ間違いなくNGを出されます。
少なくとも私なら出します。
何故でしょう?
それは、NGケースを全く考慮していない為です。
たとえば、何も入力されていない状態でボタンがクリックされた場合は?
数値以外がTextBoxに入力されている状態でボタンがクリックされた場合は?
こういう場合の処理の方法としては二通りあります。
一つは、入力されているデータをチェックし、間違いがあった場合はユーザに知らせる
方法です。
たとえば、何も入力されていない状態でボタンをクリックした場合は、「数値を入れて
ください」というメッセージを表示する等です。
もう一つは、NGとなるケースを実行できなくすることです。
例えば、何も入力されていない状態ではボタンをクリックできなくする、TextBoxには数
値以外を入力できなくする、などです。
これは趣味の問題に近いのでしょうが、ユーザーインターフェースとしては後者のほう
が優れていると思います。
一つは、入力されているデータをチェックし、間違いがあった場合はユーザに知らせる
方法です。
たとえば、何も入力されていない状態でボタンをクリックした場合は、「数値を入れて
ください」というメッセージを表示する等です。
もう一つは、NGとなるケースを実行できなくすることです。
例えば、何も入力されていない状態ではボタンをクリックできなくする、TextBoxには数
値以外を入力できなくする、などです。
これは趣味の問題に近いのでしょうが、ユーザーインターフェースとしては後者のほう
が優れていると思います。
と、いうわけで、この計算プログラムをNGケースにも対応できるように強化してみま
しょう。
そして、これは宿題にしちゃいます。
最低限、TextBoxが空のときの処理を入れてください。
しょう。
そして、これは宿題にしちゃいます。
最低限、TextBoxが空のときの処理を入れてください。
あとはがんばって!
……ではあれなので、ヒントを書いておきましょう。
数値以外を入れられなくする、というのは少しだけレレルの高い技(?)なので、とり
あえずは間違いがあった場合、ユーザーに知らせる、という方法でかまいません。
勿論、知識がある方は、お好きなように作成してくださいまし。
……ではあれなので、ヒントを書いておきましょう。
数値以外を入れられなくする、というのは少しだけレレルの高い技(?)なので、とり
あえずは間違いがあった場合、ユーザーに知らせる、という方法でかまいません。
勿論、知識がある方は、お好きなように作成してくださいまし。
- TextBoxが空かを調べる
以下のようにします。
if( textBox1.Text == "" )
{
処理~
}
または、
if( textBox1.Text.Equals("") )
{
処理~
}
- メッセージボックス
メッセージボックスの表示はMessageBoxクラスのShowメソッドを使います。
詳細についてはTIPS「メッセージボックス」を参照してください。
とりあえずは例の通りに使えばOKです。
詳細についてはTIPS「メッセージボックス」を参照してください。
とりあえずは例の通りに使えばOKです。
例
MessageBox.Show("textBoxが空です.", "エラー" )
- 文字列が数値かを調べる
文字列が数値かどうかをしらべる方法は幾つかあるでしょうが、その一つが正規表現で
す。
正規表現にはRegexクラスのIsMatchメソッドを使用します。
Regexクラスは、System.Text.RegularExpressions名前空間にあります。
なんのことだと思った場合は、System.Text.RegularExpressions.Regex.IsMatchという
感じで使うと覚えて置いてください。
たとえば、文字列が数値以外であることをしらべるには、以下のようにします。
sは検索対象の文字列です。
例なので、sと記述してもコンパイルは通りません。
す。
正規表現にはRegexクラスのIsMatchメソッドを使用します。
Regexクラスは、System.Text.RegularExpressions名前空間にあります。
なんのことだと思った場合は、System.Text.RegularExpressions.Regex.IsMatchという
感じで使うと覚えて置いてください。
たとえば、文字列が数値以外であることをしらべるには、以下のようにします。
sは検索対象の文字列です。
例なので、sと記述してもコンパイルは通りません。
if( System.Text.RegularExpressions.Regex.IsMatch( s , "[^0-9]" ) )
{
数値以外の処理
}
正規表現ってナニ?
という人も居るかもしれませんが、色々出来る検索の方法とでも思ってください。
例えば、例では文字列sの中に0~9の文字以外が含まれているか、というのを調べる
ことができます。
という人も居るかもしれませんが、色々出来る検索の方法とでも思ってください。
例えば、例では文字列sの中に0~9の文字以外が含まれているか、というのを調べる
ことができます。