大復活C#学習_GUI(フォーム .NET Framework)を使う

f:id:yasui_swift:20210204053810g:plain

BMIプロジェクト

f:id:yasui_swift:20210204053840g:plain

BMI計算例

しばらく冬眠状態だった。というわけではなくCUIで基礎学習に精進した。

あらたに基礎学習用に「基礎から学ぶ C#の教科書ー改訂新版ーC#8対応」(WINGSプロジェクト高江賢著、山田祥寛監修、日経BP社、2900円+税)を購入した。この本は表題のごとく基礎から中級までしっかり解説してある。この本にはGUIのうちWPFWindows Presentation Foundation)を用いたGUIアプリケーションの入門が記載されている。これはXAML(ザムル)を用いてプログラムを書く。いずれはこのWPFが主流になるのだろう。少しC#とは違うところがあるようだ。

一方、「C#「超」入門」(SB Creative)には.NET Frameworkのフォームを用いたGUI入門が載っている。これはC#で書く。混乱しないように、手始めに「フォーム」をGUIに用いて学習してみることにした。

「基礎から」には電卓アプリ作成の例が載っているので、いずれフォームとWPFの両者を学習して比較してみたいと思っている。

手始めは肥満度評価のBMIアプリの作成にチャレンジした。

はじめてのフォームは意外と簡単だった。ついでに体表面積の計算も付けてみた。

FormにLabel、TextBoxを貼り付けて、ButtonにイベントハンドラC#で記載してできあがり。

丸写しで作成したので、これが完璧かどうかは分からないが、試した限りではバグはでなかった。

通常用いる簡単な科学計算アプリならこれで十分に出来そうだ。夢としては、昔やった離散フーリエ変換をこれでやってみたい。

******

public Form1()
{
InitializeComponent();
}

private void CalcButtonClicked(object sender, EventArgs e)
{
float heightCm;
float weightKg;

bool success1 = float.TryParse(this.heightCmBox.Text, out heightCm);
bool success2 = float.TryParse(this.weightKgBox.Text, out weightKg);

if (success1 && success2)
{
float calcBmi = (float)(weightKg / heightCm / heightCm * 10000);
this.calcBmiBox.Text = calcBmi.ToString("00.00");
float calcBsa = (float)(Math.Pow(weightKg, 0.444) * Math.Pow(heightCm, 0.663) * 0.008883);
this.BsaBox.Text = calcBsa.ToString("0.000");

calcBmi = 0;
}

if(heightCm < 2.5)
{
MessageBox.Show("身長はセンチメートルで入れてください");

}
else if (weightKg > 1000)
{
MessageBox.Show("正しい値を入れてください");
}
}

private void ClickClear(object sender, EventArgs e)
{

this.heightCmBox.Text = " ";
this.weightKgBox.Text = " ";
this.calcBmiBox.Text = " ";
this.BsaBox.Text = " ";

}