---
# System prepended metadata

title: 民國111.10.24 C#
tags: [課程111ERP02]

---

---
tags: 課程111ERP02
---
# 民國111.10.24 C#

## 第一節

專案 project    prj
方案 solution  sln


元件  component
控制項  control

屬性 property

類別  class

物件   object

```
   private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show(" HELLO  ");
        }

//  斜線 (slash)      //是C語言的  註釋又稱註解或附註  (COMMENT)
\\  倒斜線 (back slash)


   private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("早安" +  "午安" +  "晚安");
            MessageBox.Show("早安" +"\n"+ "午安" +"\n"+ "晚安");
 //           MessageBox.Show("早安" + "午安" + "晚安");
        }

\n   n: new line
```

//作業1:
```
   private void button4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("床前明月光" +"\n"+
                                                "疑似地上霜" +"\n" +
                                                "舉頭望明月"+"\n"+
                                                "低頭思故鄉");
        }
```

//作業2
使用 MessageBox.Show() 製作一個郵遞標籤(收件人是自己的資料)
包括:
1.郵遞區號
2.地址
3.收件人   收
4.手機號碼

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
C# 產生3個空格的方法:
```
 private void button4_Click(object sender, EventArgs e)
        {
            MessageBox.Show("AAA" + string.Concat(Enumerable.Repeat(" ", 3)) + "BBB");    // AAA   BBB
        }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        string space(int n)
        {
            return string.Concat(Enumerable.Repeat(" ", n));
        }

        private void button5_Click(object sender, EventArgs e)
        {
            MessageBox.Show("AAA"+space(10)+"BBB");
        }
```
        
        
## 第二節

```
 private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("AAAAA"+"\n"+"BBBBB");
        MessageBox.Show("春眠不覺曉"+"\n"+"處處聞啼鳥" +"\n"+"夜來風雨聲"+"\n"+ "花落知多少");
        MessageBox.Show("春眠不覺曉"+"\t\t"+"處處聞啼鳥" +"\n"+"夜來風雨聲"+"\t\t"+ "花落知多少");
        // comment 注釋
        //  \n  newline     
        //  \t   tab
    }
```

Tab鍵（製表鍵（tabulator key）或表格鍵（tabular key）的縮寫）
用以將游標推進到下一個定位點上(適用於所有的編輯器)

作業:上例使用標籤 lablel 作為輸出, 使用"\n"換行
```
private void button1_Click(object sender, EventArgs e)
        {
            label1.Text = "";
            label1.Text="春眠不覺曉" + "\n" + "處處聞啼鳥" + "\n" + "夜來風雨聲" + "\n" + "花落知多少";
        }
```

//注意! 標籤 label1.Text 不接受 定位點字元 "\t"
作業:使用 MessageBox.Show() , 製作下列報表欄位

學  號		姓  名
\------                          ------
1001		JOHN
1002		MARY
1003		TOM
1004		JERRY

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
```
         private void button1_Click(object sender, EventArgs e)
        {
            byte max, min;     
            max = 255;        //極值要背 行業基本常識(1 bytes) 
            min = 0;
            MessageBox.Show("MAX="+max.ToString());
            MessageBox.Show("MIN=" + min);            
        }  // 0000 1111
```

 ```
private void button2_Click(object sender, EventArgs e)
{
    sbyte max, min;    //signed byte 有號位元組    //極值要背 行業基本常識(1 bytes) 
    max = 127;         
    min = -128;
    MessageBox.Show("MAX=" + max);
    MessageBox.Show("MIN=" + min);           
}

private void button3_Click(object sender, EventArgs e)
{
    sbyte 最大值, 最小值;         // C# 可以使用中文變數名稱, 但是不建議 
    最大值 = 127;                     //極值要背 行業基本常識
    最小值 = -128;
    MessageBox.Show("MAX=" + 最大值);
    MessageBox.Show("MIN=" + 最小值);   
}
```



```
  private void button4_Click(object sender, EventArgs e)
        {
            sbyte 最大值, 最小值;         // C# 可以使用中文變數名稱, 但是不建議 
            最大值 = sbyte.MaxValue;                     //MaxValue 是屬性, 代表最大值
            最小值 = sbyte.MinValue;                      //MinValue 是屬性, 代表最小值
            MessageBox.Show("MAX=" + 最大值);
            MessageBox.Show("MIN=" + 最小值);
        }
```

        private void button5_Click(object sender, EventArgs e)
        {
            short max, min;          //short 有號短整數(2 bytes)   有 s (signed)            
            max = +32767;
            min = -32768;
            MessageBox.Show("MAX=" + max);
            MessageBox.Show("MIN=" + min);          
        }

        private void button6_Click(object sender, EventArgs e)
        {
            ushort max, min;   // unsigned short(2 bytes)  無號短整數 
            max = 65535;          //極值要背 行業基本常識
            min = 0;
            MessageBox.Show("MAX=" + max);
            MessageBox.Show("MIN=" + min);          
        }

作業: 求下列資料型態 byte, sbyte, short, ushort
          1.最大值的總和
          2.最小值的總和
          3.最大值的總和+最小值的總和

//參考解答
```
private void button1_Click(object sender, EventArgs e)
        {
            int Max, Min, total;
            Max= byte.MaxValue + sbyte.MaxValue + short.MaxValue + ushort.MaxValue;
            Min = byte.MinValue + sbyte.MinValue + short.MinValue + ushort.MinValue;
            total = Max + Min;
            MessageBox.Show("MAX=" +Max.ToString());    //98684
            MessageBox.Show("MIN="  +Min.ToString());    //-32896 
            MessageBox.Show("TOT=" + total.ToString());   //65788
        }
```


```
private void button5_Click(object sender, EventArgs e)
{
    int max, min;   // integer
    max = 2147483647;             //極值約+- 21億    int 是最常使用的 整數 數值型態 integer
    min = -2147483648;
    MessageBox.Show("MAX=" + max);
    MessageBox.Show("MIN=" + min);          
}
```



   
```
private void button6_Click(object sender, EventArgs e)
{
    uint max, min;   //unsigned integer 無號整數
    max = 4294967295;                //極值約 + 42億  (2進位數字 左移1位數  相當於乘 2)
    min = 0;
    MessageBox.Show("MAX=" + max);
    MessageBox.Show("MIN=" + min);         
}

private void button7_Click(object sender, EventArgs e)
{
    long max, min;   //long integer     (8 byte)
    max = 9223372036854775807;
    min = -9223372036854775808;
    MessageBox.Show("MAX=" + max);
    MessageBox.Show("MIN=" + min);     
}

private void button8_Click(object sender, EventArgs e)
{
    ulong max, min;   //unsigned long  integer
    max = 18446744073709551615;
    min = 0;
    MessageBox.Show("MAX=" + max);
    MessageBox.Show("MIN=" + min);     
}
```



```
 private void button8_Click(object sender, EventArgs e)
        {
            int n=1;
            MessageBox.Show(  n.GetType().ToString());               //System.Int32     32位元
            long n2 = 2;
            MessageBox.Show(n2.GetType().ToString()     );          //System.Int64     64位元 
        }
```

作業:
         模仿上例, 使用GetType()顯示下列資料型態:
         byte, sbyte, short, ushort, int, uint, long, ulong 

```
 private void button9_Click(object sender, EventArgs e)
        {
            float f1, f2;       //有小數點的數  稱為浮點數  (float)   數字後面要加註 f 或 F
            f1 = 3.14f;        //注意! 數字後面加註 f 表示這個數字佔4byte
            f2 = -1.0F;
            MessageBox.Show("f1=" + f1);
            MessageBox.Show("f2=" + f2);     
        }
```

```
  private void button12_Click(object sender, EventArgs e)
        {
            float f1, f2;       
            f1 = 0.3333333333F;      // only 7 digit precision
            f2 =- 0.5555555555F; 
            MessageBox.Show("f1=" + f1);    // 0.3333333
            MessageBox.Show("f2=" + f2);     //-0.5555556           4捨5入
            MessageBox.Show("type=" + f2.GetType().ToString());     // System.Single
        }
```

```
   private void button10_Click(object sender, EventArgs e)
        {
            double d1, d2;     // double 是最常使用的 浮點數 數值型態,  數字後面不用加註 d, 用起來比float方便
            d1 = 3.14E0;      // e  科學記號表示法        3.14*10 的0次方
            d2 = -0.314e1;   // e  科學記號表示法    -0.314*10 的1次方
            MessageBox.Show("d1=" + d1);
            MessageBox.Show("d2=" + d2);
            MessageBox.Show("d1+d2=" + (d1+d2) );    // 0
            MessageBox.Show("type=" + (d1 + d2).GetType().ToString());    //  System.Double
        }
```

 ```
private void button15_Click(object sender, EventArgs e)
    {
        double d1, d2;
        d1 = 3.14d;      // d  可以省略
        d2 = -3.14;       // double 是最常使用的 浮點數 數值型態  數字後面不用加註 d
        MessageBox.Show("d1=" + d1);
        MessageBox.Show("d2=" + d2);
        MessageBox.Show("d1+d2=" + (d1 + d2));    
    }
```


```
private void button11_Click(object sender, EventArgs e)
    {
        decimal max, min;   // decimal 是有號整數型態    貨幣 (16 Byte)
        max = 9223372036854775807;
        min = -9223372036854775808;
        MessageBox.Show("MAX=" + max);
        MessageBox.Show("MIN=" + min);     
        MessageBox.Show("type=" + max.GetType());    //  System.Decimal
    }
```


//總結心法:在ERP領域
1.整數使用 int
2.浮點數使用 double

```
private void button12_Click(object sender, EventArgs e)
{
    char c1, c2;    // char   character  字元
    c1 = 'A'; c2 = 'a';
    MessageBox.Show("c1=" + c1);
    MessageBox.Show("c2=" + c2.ToString());   
    MessageBox.Show("c1+c2=" + c1.ToString()+c2.ToString());   //Aa
}
```



作業:使用字元, 拼出3種水果的英文名稱
例如: Apple, Banana, Cherry
參考解答:
```
 private void button1_Click(object sender, EventArgs e)
        {
            char c1,c2,c3,c4,c5;    //5  字元
            c1 = 'A'; c2 = 'p'; c3='p'; c4 = 'l'; c5 = 'e';            
            MessageBox.Show("Apple=" + c1.ToString() + c2.ToString() + c3.ToString() + c4.ToString() + c5.ToString() );   //Apple
        }
```

```
 private void button13_Click(object sender, EventArgs e)
        {
            MessageBox.Show(1.ToString() );         // 物件.方法
        }
```

```
private void button14_Click(object sender, EventArgs e)
    {
        string s1, s2, s3;       //字串 : 字元所形成的串列
        s1 = "AAA";
        s2 = "BBB";
        s3 = s1 + s2;
        MessageBox.Show(s3);
    }
```


 ```
private void button15_Click(object sender, EventArgs e)
    {
        bool b1, b2,b3,b4;   //bool  boolean 布林  
        b1 = true;                  //布林變數  儲存邏輯值( true , false)
        b2 = false;
        b3 = b1 && b2;    //  &&    and     
        b4 = b1 || b2;        //   | |       or
        MessageBox.Show(b3.ToString());    //false
        MessageBox.Show(b4.ToString());    //true
        //  !   not
        MessageBox.Show((!b1).ToString());    // !true=false
        MessageBox.Show((!b2).ToString());    // !false=true
    }
```


//下列範例是基礎練習: 能夠在表單上布置元件,進行輸入(Input) ->處理(Process) ->輸出(Output)  , IPO
//系統(System)的定義:具有輸入(Input) ->處理(Process) ->輸出(Output)
作業: 求  1+2 = 3
參考解答
```
 private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show((1 + 2).ToString() );
        }
```

```
// 使用textBox1 作為輸入元件     (textBox  文字盒)
    private void button1_Click(object sender, EventArgs e)
        {
            string s;
            s = textBox1.Text;
            MessageBox.Show("You input :"+s);
        }
```

// 作業: 求n3=n1+n2
```
     private void button1_Click(object sender, EventArgs e)
        {
            int n1, n2, n3;
            n1 = Convert.ToInt32( textBox1.Text);
            n2 =  Convert.ToInt32(textBox2.Text);
            n3=n1+n2;
            MessageBox.Show("n3=:"+n3);
        }
```

轉換數值字串為整數的方法:
1. Convert.ToInt32()
2. Int.Parse()

作業:
仿上例,布置textBox1, textBox2, label1, label2, 使用 Int.Parse() 做轉換, 求n3=n1+n2

//心得
1.數字輸入要使用 Convert.ToInt32() 或 Int.Parse()
2.數字輸入要使用 ToString() 轉成字串

// 也可以使用 Label 元件做輸出
```
    private void button1_Click(object sender, EventArgs e)
        {
            int n1, n2, n3;
            n1 = Convert.ToInt32(textBox1.Text);
            n2 = Convert.ToInt32(textBox2.Text);
            n3 = n1 + n2;
           label3.Text="n3=" + n3.ToString();
        }
```

//Convert.ToDouble 把字串數字, 轉換為 浮點數
// double.Parse把字串數字, 轉換為 浮點數
```
    private void button1_Click(object sender, EventArgs e)
        {
            double n1, n2, n3;
            n1 = Convert.ToDouble(textBox1.Text);
            n2 = Convert.ToDouble(textBox2.Text);
            n1 = Double.Parse(textBox1.Text);
            n2 = Double.Parse(textBox2.Text);
            n3 = n1 + n2;
            label3.Text = "n3=" + n3.ToString("0.0000");   //指定顯示:小數點後4位數, 小數點後的第5位數4捨5入
        }
```

//心得: Int , Double 都是資料型別, 有.Parse() 可以接龍

作業1:
//小數點的位數控制(使用ToString("0.00"))
```
  private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show((3.14159265359).ToString("0.00"));            //3.14
            MessageBox.Show((3.14159265359).ToString("0.0000"));        //3.1416
        }
```

作業2:
//如何去除左邊所有的0 ?
```
 private void button2_Click(object sender, EventArgs e)
        {
            string s;
            s = 3.14159.ToString("0000.0000");
            MessageBox.Show(s);    //0003.1416
            s = s.TrimStart('0');
            MessageBox.Show(s);   //3.1416
        }
```



作業1: 用3個 textBox輸入1, 2, 3, 求  1+2+3 = 6

作業2: 輸入半徑(r)  求圓的周長(2*PI*r)   , 面積(PI*r*r), 圓球體積v=4/3*PI*r*r*r

作業3: 輸入矩形的長,寬  求矩形的周長(  2*(長+寬)  ),  面積(長*寬)

作業4: 輸入梯形的上底,下底, 高,  求梯形的面積 (上底+下底）*高 / 2

作業5:工程師開車, 由台北公司到高雄客戶, 維修機器, 車速和行駛時間如下:
 	  (台北<->新竹)={ 60KM/H, 1H  }
 	  (新竹<->台中)={ 80KM/H, 1.5H  }
 	  (台中<->台南)={ 90KM/H, 1.5H  }
  	 (台南<->高雄)={ 70KM/H, 1H  }
          請用設計表單輸入資料, 計算 工程師 行駛的總里程數 和 所花的總時間 
          (距離=速率*時間)
作業6:計算庫存量
          庫存量=期初存量(100)+本期進貨量(1000)-本期進貨退回量(50)-本期出貨量(900)+本期出貨退回量(50)
                      =200 
作業7:計算一天總共有幾秒?
作業8:輸入一週7天的溫度,計算一週的平均溫度 { 26.5, 28.0, 27.3,  30.6 , 32.1, 33.4, 31.9  }  //29.9714
作業9:輸入身高, 體重, 計算BMI 
           BMI = 體重 (公斤) / (身高 (公尺) x 身高 (公尺))

作業10:火星1 天有 24 小時 37 分鐘, 火星一天總共有幾秒?
// 老師教 TabControl 元件 , 以利整合小作業