---
tags: 視窗程式設計
---
# 課堂作業 3-1:請將其他長度單位轉換做出來
學到這裡,要換同學試試看,請同學把其他長度單位計算的轉換做出來,使用者不管在哪一個輸入文字框輸入數字,都能轉換成其他長度單位。以下程式碼是公分轉換成其他長度單位,同學可以先研究看看,再把其他長度單位的轉換程式寫出來。

以上是輸入100公分後,其他單位轉換的結果
請同學將完成後的程式碼,Commit 後,上傳到 GitHub 上面。
## 提示
你可能也需要長度單位轉換的公式,可以參考這個[網站](https://www.rapidtables.com/convert/length/index.html)。
```csharp=
private void txtCM_KeyUp(object sender, EventArgs e)
{
double douCM; //宣告一個double變數,變數名稱叫douCM
douCM = Convert.ToDouble(txtCM.Text); //從txtCM輸入文字框取得輸入的文字,並且轉換成double的資料型態
//透過string.Format格式化成小數點後共10位的數字,轉型成文字型態,在txtM顯示結果
txtM.Text = string.Format("{0:0.##########}", douCM / 100);
txtKM.Text = string.Format("{0:0.##########}", douCM / 100000);
txtIn.Text = string.Format("{0:0.##########}", douCM / 2.54);
txtFt.Text = string.Format("{0:0.##########}", douCM / 30.48);
txtYard.Text = string.Format("{0:0.##########}", douCM / 91.44);
}
```
請同學將上課練習的基本視窗程式設計,然後使用 Github Desktop 去追蹤。接著,將這個專案上傳到 Github,看看有沒有成功上傳。請不要忘記,一邊製作的過程,一邊使用Commit做紀錄。
之後我們還有作業 3-2,屆時會延續這個專案,所以只要開一個專案就可以了。
## 課堂作業 3-1:參考答案
:::spoiler 點開可以看到參考答案,不過建議你先試試看,再看參考答案。
```csharp=
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 LengthCalculator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void txtCM_KeyUp(object sender, EventArgs e)
{
double douCM; //宣告一個double變數,變數名稱叫douCM
douCM = Convert.ToDouble(txtCM.Text); //從txtCM輸入文字框取得輸入的文字,並且轉換成double的資料型態
//透過string.Format格式化成小數點後共10位的數字,轉型成文字型態,在txtM顯示結果
txtM.Text = string.Format("{0:0.##########}", douCM / 100);
txtKM.Text = string.Format("{0:0.##########}", douCM / 100000);
txtIn.Text = string.Format("{0:0.##########}", douCM / 2.54);
txtFt.Text = string.Format("{0:0.##########}", douCM / 30.48);
txtYard.Text = string.Format("{0:0.##########}", douCM / 91.44);
}
private void txtM_KeyUp(object sender, EventArgs e)
{
double douM;
douM = Convert.ToDouble(txtM.Text);
txtCM.Text = string.Format("{0:0.##########}", douM * 100);
txtKM.Text = string.Format("{0:0.##########}", douM * 0.001);
txtIn.Text = string.Format("{0:0.##########}", douM * 39.37);
txtFt.Text = string.Format("{0:0.##########}", douM * 3.28);
txtYard.Text = string.Format("{0:0.##########}", douM * 1.09);
}
private void txtKM_KeyUp(object sender, EventArgs e)
{
double douKM;
douKM = Convert.ToDouble(txtKM.Text);
txtCM.Text = string.Format("{0:0.##########}", douKM * 100);
txtM.Text = string.Format("{0:0.##########}", douKM * 1000);
txtIn.Text = string.Format("{0:0.##########}", douKM * 39370.1);
txtFt.Text = string.Format("{0:0.##########}", douKM * 3280.84);
txtYard.Text = string.Format("{0:0.##########}", douKM * 1093.61);
}
private void txtIn_KeyUp(object sender, EventArgs e)
{
double douIn;
douIn = Convert.ToDouble(txtIn.Text);
txtCM.Text = string.Format("{0:0.##########}", douIn * 2.54);
txtM.Text = string.Format("{0:0.##########}", douIn * 0.0254);
txtKM.Text = string.Format("{0:0.##########}", douIn * 0.0000254);
txtFt.Text = string.Format("{0:0.##########}", douIn * 0.0833);
txtYard.Text = string.Format("{0:0.##########}", douIn * 0.0278);
}
private void txtFt_KeyUp(object sender, EventArgs e)
{
double douFt;
douFt = Convert.ToDouble(txtFt.Text);
txtCM.Text = string.Format("{0:0.##########}", douFt * 30.48);
txtM.Text = string.Format("{0:0.##########}", douFt * 0.3048);
txtKM.Text = string.Format("{0:0.##########}", douFt * 0.0003048);
txtIn.Text = string.Format("{0:0.##########}", douFt * 12);
txtYard.Text = string.Format("{0:0.##########}", douFt * 0.3333);
}
private void txtYard_KeyUp(object sender, EventArgs e)
{
double douYard;
douYard = Convert.ToDouble(txtYard.Text);
txtCM.Text = string.Format("{0:0.##########}", douYard * 91.44);
txtM.Text = string.Format("{0:0.##########}", douYard * 0.9144);
txtKM.Text = string.Format("{0:0.##########}", douYard * 0.0009144);
txtIn.Text = string.Format("{0:0.##########}", douYard * 36);
txtFt.Text = string.Format("{0:0.##########}", douYard * 3);
}
}
}
```
:::