今天主題是教大家如何使用C#來設計
"攝氏華氏溫度轉換服務系統"。
在開始前先致謝
高雄科技大學的
陳茂盛老師教導C#程式設計這門藝術。
本次使用的程式編譯器為
Microsoft Visual Studio
那~~讓我們開始吧!!
首先先了解攝氏華氏換算公式:
再來我們在建立一個
類別庫(.NET Framework)來讓我們建立一個類別庫。
類別庫程式碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//以上都是自動生成
namespace TPService
{
public class TPClass
{
public double DC { set; get; }
public double DF { set; get; }
//設定DC與DF接收值
public double CtoF(double _inputc)
//建立一個公用(public)的double命名為CtoF(CtoF可自行更改)後()內設定_inputc為double型別
{
DF = (_inputc * 9.0 / 5.0) + 32.0;//DF值等於_inputc乘9除5再加32
return DF;//記得 return
}
public double FtoC(double _inputf)
{
DC = (_inputf - 32.0) * 5.0 / 9.0;
return DC;
}
//FtoC也是同道理
}
}
再來在專案中新增一個
WindowsFormsApp
之後我們先將WindowsForm設成起始專案
再將我們的類別庫(.NET Framework)參考進來
做完後我們需要2個TextBox、2個Label與4個Button
點選物件後可以利用右下角來更改相關名字或數值
下圖是我目前的相關命名,記住命名以利後續的程式撰寫。
雙擊每個物件
自動生成大概是長這樣:
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 WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void BTN1_Click(object sender, EventArgs e)
{
}
private void BTN2_Click(object sender, EventArgs e)
{
}
private void BTN3_Click(object sender, EventArgs e)
{
}
private void BTN4_Click(object sender, EventArgs e)
{
}
private void TB1_TextChanged(object sender, EventArgs e)
{
}
}
}
首先先加入我們的類別庫
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;
using TPService;//使用TPService(就是您的類別庫)
再來我們先編輯BTN1的部分,程式碼如下:
private void BTN1_Click(object sender, EventArgs e)
{
TPClass changetp = new TPClass(); //使用TPClass並命名為changetp
if (string.IsNullOrEmpty(TB2.Text))
//如果TB2是不存在或是不允許的值就執行{}中的行為
//這部分是為了怕有人打錯數值或沒輸入就轉換而做的防呆機制
{
MessageBox.Show("請輸入數值");
return;
}
else //不然
{
changetp.DC = changetp.FtoC(double.Parse(TB2.Text));//changetp中的DC等於changetp中的自訂式FtoC(接收TB2的值並使用double資料型態)
TB1.Text = changetp.DC.ToString("##.00");//TB1顯示changetp的DC的值格式取小數後2位
TB2.Text = double.Parse(TB2.Text).ToString("##.00");//TB2顯示原TB2的值,格式也取小數後2位
}
}
BTN2也是一樣作法歐,稍微改變下而已
private void BTN2_Click(object sender, EventArgs e)
{
TPClass changetp = new TPClass();
if (string.IsNullOrEmpty(TB1.Text))
{
MessageBox.Show("請輸入數值");
return;
}
else
{
changetp.DF = changetp.CtoF(double.Parse(TB1.Text));
TB2.Text = changetp.DF.ToString("##.00");
TB1.Text = double.Parse(TB1.Text).ToString("##.00");
}
}
再來是BTN3
這部分是清理TB1與TB2的值,我們可以運用Clear()的功能。
private void BTN3_Click(object sender, EventArgs e)
{
TB1.Clear();
TB2.Clear();
}
最後是離開的按鈕設定
我們要做到這個效果
private void BTN4_Click(object sender, EventArgs e)
{
if(MessageBox.Show("確定離開?","TPService",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.OK)
Application.Exit();
}
基本上相關對照如下:
這樣就完成了。
下方整理了完整的程式碼:
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;
using TPService;
/*
代號參考表:
BTN2=轉換紐
BTN3=清除資料紐
BTN4=EXIT紐
TB1=攝氏TEXTBOX輸入欄
TB2=華氏TEXTBOX輸入欄
*/
namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void BTN2_Click(object sender, EventArgs e)
{
{
TPClass changetp = new TPClass();
if (string.IsNullOrEmpty(TB1.Text) && string.IsNullOrEmpty(TB2.Text))
{
MessageBox.Show("請輸入數值");
return;
}
else if (string.IsNullOrEmpty(TB2.Text))
{
changetp.DC = changetp.CtoF(double.Parse(TB1.Text));
TB2.Text = changetp.DF.ToString("##.00");
TB1.Text = double.Parse(TB1.Text).ToString("##.00");
}
else
{
changetp.DF = changetp.FtoC(double.Parse(TB2.Text));
TB1.Text = changetp.DC.ToString("##.00");
TB2.Text = double.Parse(TB2.Text).ToString("##.00");
}
}
}
private void BTN3_Click(object sender, EventArgs e)
{
TB1.Clear();
TB2.Clear();
}
private void BTN4_Click(object sender, EventArgs e)
{
if(MessageBox.Show("確定離開?","TPService",MessageBoxButtons.OKCancel,MessageBoxIcon.Question,MessageBoxDefaultButton.Button1)==DialogResult.OK)
Application.Exit();
}
}
}
By:Ender
Day:2018/10/11
Time:06:16am
Revision :REV 1.33