---
# System prepended metadata

title: 課堂作業 3-1：請將其他長度單位轉換做出來
tags: [視窗程式設計]

---

---
tags: 視窗程式設計
---

# 課堂作業 3-1：請將其他長度單位轉換做出來

學到這裡，要換同學試試看，請同學把其他長度單位計算的轉換做出來，使用者不管在哪一個輸入文字框輸入數字，都能轉換成其他長度單位。以下程式碼是公分轉換成其他長度單位，同學可以先研究看看，再把其他長度單位的轉換程式寫出來。

![](https://imgur.com/4cCpF7b.png)
以上是輸入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);
        }
    }
}
```
:::
