目前分類:C# (53)

瀏覽方式: 標題列表 簡短摘要

匿名函式(或稱「無名函式」):

匿名函式,顧名思義就是該函式沒有名稱,無法從外部呼叫。這種函式通常在整篇程式碼中,只被引用一次。其宣告方法為:

delegate(變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三)

{

//程式碼內容

}

匿名函式最常使用到的地方,是為某函式指派具體程式碼時。如為某個控制項的事件指派具體的事件處理函式:

控制項名稱.事件名稱 += new EventHandler

(       

delegate(變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三)

{

//程式碼內容

}

);

 

 

 

上一篇:delegate

下一篇:遞迴函式

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

使用delegate關鍵字,來宣告一個函式類別:

所謂「函式類別」,又稱為「委派」,是指一專門用來儲存某個「已指定參數的函數」之型式。函式類別的宣告需利用到關鍵字delegate(其中文名稱為「委派」),宣告寫法如下:

存取修飾詞 delegate 回傳值的資料形態 委派名稱(變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三…);

接著可以宣告「委派物件」為某一個已寫好的函式,如下:

委派名稱 委派物件名稱 = 函式名稱;

注意,此函式之參數數量與參數型態必須與委派相同。

接著,我們可以直接使用該委派物件來代表該函式、執行該函式,如:

委派物件名稱(變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三…);

範例如下:

public delegate double opration(double number1, double number2);

public double get_sum(double x, double y)

{   return x + y; }

public double get_average(double x, double y)

{   return (x + y)/2; }

public Form1()

{   InitializeComponent();}

private void Form1_Load(object sender, EventArgs e)

{

    opration opration1 = get_sum;  //此行利用委派代表get_sum函式

    textBox1.Text = opration1(2, 3).ToString();  //此行利用委派執行get_sum函式

}

執行後,textBox中顯示:5

若是將上述的

opration opration1 = get_sum;

改成

opration opration1 = get_average;

則便是利用同一個委派來代表、執行get_average函式。執行後,textBox中會顯示:2.5

 

 

 

上一篇:子函式

下一篇:匿名函式

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

在函式中宣告子函式(內部函式)

需在函式中宣告一個函式變數,這個函式變數就是子函式,寫法如:

Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = new Func<參數一的型別, 參數二的型別…, 回傳型別>( (參數一名稱, 參數二名稱…) =>

{

    //子函式內容

}); 

呼叫子函式的方法同於一般函式,即:

子函式名稱(參數一, 參數二…);

注意:子函式為局域變數,離開了母函式範圍後,就不能呼叫子函式。

注意:用以上形式所寫的子函式,都必須要有回傳變數。若想寫一個無回傳變數的子函式,應把Func改用Action,如下:

Action<參數一的型別, 參數二的型別…> 子函式名稱 = new Action <參數一的型別, 參數二的型別…>( (參數一名稱, 參數二名稱…) =>

{

    //子函式內容

}); 

呼叫子函式的方法同於一般函式,即:

子函式名稱(參數一, 參數二…);

注意:若子函式還是個遞迴函式,那麼:

Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = new Func<參數一的型別, 參數二的型別…, 回傳型別>( (參數一名稱, 參數二名稱…) =>

{

    子函式名稱(參數一, 參數二…);

});

這樣的程式碼,無法編譯。應兩段式宣告,先將函式宣告成null,再以委派的方式宣告函式:

Func<參數一的型別, 參數二的型別…, 回傳型別> 子函式名稱 = null;

子函式名稱 = delegate(參數一的型別 參數一, 參數二的型別 參數二…)

{

    子函式名稱(參數一, 參數二…);

};

 

 

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

多載:

所謂函式的多載(overload),就是說一個函式可有與其「同名、但不同功用、或所需參數不同的函式」。如下例:

public double avg(int a_,int b_)

{ return Convert.ToDouble(a_ + b_)/2; }

public double avg(int a_, int b_, int c_)

{ return Convert.ToDouble(a_ + b_ + c_)/3; }

這兩個函式名稱都是avg,但輸入參數的數目不同、內部程式碼也不同。而呼叫函式時並不會發生衝突,因為C#可藉由輸入數目的數量來判別使用者要呼叫的是哪個函式。譬如,avg(1,2)就是呼叫第一個函式,而avg(1,2,3)就是呼叫第二個函式。

 

 

 

 

上一篇:函式參數傳遞

下一篇:子函式

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

參數列的寫法與參數傳遞:

參數列的寫法決定參數是如何傳的給函式,也決定參數在函式作用過後會發生的變化。參數列的寫法有:

(1) 一般寫法:

其對應的參數傳遞方式是「傳值」,是將參數的值傳入函式,也就是說函式只利用參數的值去做運算,但不會改變參數本身的值。寫法為:

變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三

如:

public double ten_years_ago(int age_)  //這就是我們要討論的傳值函式

{ age_ += 10; return age_; }

public Form1()    //這個函式是C# 表單用到的函式,在此並不討論

{ InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e)  //這個函式也是C# 表單用到的函式,我們的程式碼就寫在裡頭

{

    //以下是我們要討論的程式碼,包括傳值函式的用法

    int age_of_Wiewei = 20;

    double new_age = ten_years_ago(age_of_Wiewei);  //傳值函式的用法

    textBox1.Text = "new_age=" + new_age.ToString() + ",age_of_Wiewei=" + age_of_Wiewei.ToString() ;

}

執行後,顯示出結果是:new_age=30,age_of_Wiewei=20

表示函式執行過後,原本的變數(就是age_of_Wiewei)並沒有改變。

(2) 傳址寫法:

其對應的參數傳遞方式是「傳址」,是將參數的記憶體位址傳入函式,也就是說函式除了利用參數的值去做運算,也可以改變參數本身的值。寫法為在變數型態前加上關鍵字ref

ref 變數型態一 參數一, ref 變數型態二 參數二, ref 變數型態三 參數三

如:

public double ten_years_ago(ref int age_)  //這就是我們要討論的傳址函式

{ age_ += 10; return age_; }

public Form1()    //這個函式是C# 表單用到的函式,在此並不討論

{ InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e)  //這個函式也是C# 表單用到的函式,我們的程式碼就寫在裡頭

{

    //以下是我們要討論的程式碼,包括傳址函式的用法

    int age_of_Wiewei = 20;

    double new_age = ten_years_ago(ref age_of_Wiewei);  //傳址函式的用法:也要在變數名稱前加上關鍵字ref

    textBox1.Text = "new_age=" + new_age.ToString() + ",age_of_Wiewei=" + age_of_Wiewei.ToString() ;

}

執行後,顯示出結果是:new_age=30,age_of_Wiewei=30

很明顯的,函式執行過後,原本的變數(就是age_of_Wiewei)已經改變。這效果與傳值函式不同!

(3) 不定數目的參數傳遞:

在前面兩種參數列的寫法中,參數的數目都是在定義函式時,就已寫在參數列上。但事實上,在應用時可能會碰到「要輸入的參數之數目無法事先確定、或可以變動」的情況,那就無法在定義函式時決定參數的數目,則參數列的寫法會變成:

params變數型態[] 變數名稱

其中,該變數名稱所代表的變數是一個變數矩陣,也擁有一般矩陣的成員及成員函式,其元素的變數型態為變數型態,其元素數目無法事先定義,端看此函式被呼叫到時,使用者要輸入多少元素。

例如:

public double polynomial(double x_,params double[] coe_) //這就是我們要討論的不定變數數目函式

{

      double y_=0;

      for (int i = 0; i < coe_.Length; i++)

      { y_ += coe_[i]*Math.Pow(x_,i); }    //coe_是一個變數矩陣

      return y_;

}

public Form1()

{ InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e)

{

      textBox1.Text = polynomial(2,2,5,-1,1).ToString();           

}

執行後,輸出:16。正是f(x)=2+5*x-1*x2+1*x3這個數學函式在x=2時的值。因為多項式的係數對應到變數矩陣,所以在使用此函式時可輸入任意數目的多項式係數,來計算任意階多項式f(x)在任何x的值,算是很實用的函式。

再舉一個例子:polynomial(3,9,2)可計算出f(x)=9+2*xx=3的值。

(4) 不定變數型態的參數傳遞(泛型函式)

在前面的寫法中,參數的變數型態都是在定義函式時,就已寫在參數列上。但事實上,在應用時可能會碰到「要輸入的參數之變數型態無法事先確定」的情況,那就無法在定義函式時決定參數的變數型態,我們稱「不定變數型態的參數」為「泛型參數」,稱「使用泛型參數的函式」為「泛型函式」。泛型函式的寫法為:

回傳值的資料形態 函式名稱<變數型態代號一,變數型態代號二…>(變數型態代號一 參數一, 變數型態代號二 參數二…)

如:

public void show_message<T>(T message_)  //這就是我們要討論的泛型函式,其中T是變數型態代號

{ textBox1.Text += message_.ToString();}

public Form1()

{ InitializeComponent(); }

private void Form1_Load(object sender, EventArgs e)

{

      show_message("I 'm ");    //泛型函式的使用方法,與一般函式一樣

      show_message(10);

      show_message(" years old.");  

}

執行後,輸出:I 'm 10 years old.

(5) 把外部函式當作參數:

把外部函式當作參數的好處是,本函式在執行時可以依情況呼叫不同的外部函式來處理本函式中的其他參數。欲把外部函式當作參數,則這個被當成參數的外部函式應該寫在本函式的參數列中,且應寫成:

Func<外部函式參數型態一, 外部函式參數型態二, 外部函式參數型態三 外部函式回傳值型態 > 函式參數名

要注意,在本函式的參數列中也要加上:

外部函式參數型態一 參數一, 外部函式參數型態二 參數二, 外部函式參數型態三 參數三

好讓外部函式能夠取得其要用的參數。

以下用範例來說明:

這個範例,是想寫一個函式,用來求「數學函式在某個範圍內的最大值」。

double get_local_maximun(double x1_, double x2_, double x_bin_width_,

Func<double, double[], double> math_function_, 

// 在此,math_function_就是外部函式參數

params double[] func_pars_)  // func_pars_雖在本函式參數列中,但實際上是給外部函式所用的參數

{

    double max_=0;

    for (double x_ = x1_; x_<=x2_; x_+=x_bin_width_)

    {

        if (x_==x1_)

        {

            max_=math_function_(x_,func_pars_);  //在此可見,func_pars_是給外部函式所用

            continue;

        }

        if (math_function_(x_,func_pars_)>max_)

        { max_=math_function_(x_,func_pars_);}

    }

    return max_;

}

 

//以下有四個數學函式,每個都符合Func<double, double[], double>的格式,也就是說每個都可以被當作get_local_maximun函式的外部函式參數math_function_

double cos(double x_, params double[] par_)

{ return par_[0] * Math.Cos(par_[1] * x_ + par_[2]) + par_[3]; }

 

double sin(double x_, params double[] par_)

{ return par_[0] * Math.Sin(par_[1] * x_ + par_[2]) + par_[3]; }

 

double cos_sin(double x_, params double[] par_)

{

    double cos = par_[0] * Math.Cos(par_[1] * x_ + par_[2]) + par_[3];

    double sin = par_[4] * Math.Cos(par_[5] * x_ + par_[6]) + par_[7];

    return cos + sin;

}

double x_square(double x_, params double[] par_)

{ return par_[0] * x_ * x_ + par_[1] * x_ + par_[2]; }

 

//這裡假設表單中有一個Button名為button1

private void button1_Click(object sender, EventArgs e)

{

    textBox1.Text = get_local_maximun(-Math.PI, Math.PI, 0.01,

                                  cos_sin,2, 3, 1, 0,

                                        1, 4, 2, 0).ToString();  

}

// 按下button1後顯示:2.8832540555。是f(x)=2*cos(3*x+1)+0+1*sin(4*x+2)+0-π<=x<=π之間的計算機最大值。

 

//這裡假設表單中有一個Button名為button2

private void button2_Click(object sender, EventArgs e)

{  textBox1.Text = get_local_maximun(-10, 10, 0.01, x_square, 1, 1, 5).ToString();}

// 按下button2後顯示:114.9999999。而f(x)=1*x2+1*x+5-10<=x<=10之間的最大值是115。兩者之間的差別應是計算機的誤差。

 

//這裡假設表單中有一個Button名為button3

private void button3_Click(object sender, EventArgs e)

{ textBox1.Text = get_local_maximun(-10, 10, 0.01, cos, 1, 2, 0.5, 2).ToString();}

// 按下button3後顯示:3。正是f(x)=1*cos(2*x+0.5)+2-10<=x<=10之間的最大值。

(6) 利用參數名稱直接指定參數值:

這種方法可以不照順序直接指定某個參數值。適用於函式中參數極多、且並非每個都需要指定的時候。語法為:函式名稱(參數名:參數值);

範例如:

public int A(int a=0, int b=0, int c=0)

{ return a + b + c; }

int tt = A(b: 10, c:3);   // 利用參數名稱,直接指定bc的值

richTextBox1.Text += tt.ToString();

執行後顯示:

13

 

 

 

上一篇:建立函式

下一篇:多載

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

 

1. 建立函式:

[存取修飾詞] [static] 回傳值的資料形態 函式名稱(變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三…)

{

          函式內容

          return 回傳值;  //請看以下的註一

}

其中:

存取修飾詞:可寫可不寫。共有三種寫法:

public:代表此函式能夠讓程式中所有類別存取。

protected:代表此函式只能夠讓其所屬的類別、及這個類別的子類別存取。

private:代表此函式只能夠讓其所屬的類別存取。

若不寫,則預設為private

static:可寫可不寫。若有寫,則此函式就是「靜態函式」,靜態函式只能對其所屬類別中的靜態變數做存取,而不能存取非靜態變數。若不寫,則此函式就是「非靜態函式」,非靜態函式則可以存取靜態變數與非靜態變數兩者。(詳情請參看「類別」)

回傳值的資料形態:函式有其回傳值。一個函式在定義時,就要先定義其回傳值的資料形態,此項寫法如:intstringdouble、或是類別名若不將此函式設回傳值,則此項須寫為void

註一:若回傳值的資料形態不為void,表示函式一定要寫回傳值。反之,若回傳值的資料形態void,表示函式就不能寫回傳值

變數型態一 參數一, 變數型態二 參數二, 變數型態三 參數三:此稱為「參數列」,用來設定該函式的參數。參數的數目事實可以任意多個、或零個。這些參數是由函式外部輸入,並在函式內部作用。

 

 

上一篇:sortedlist

下一篇:函式參數傳遞

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

 

※ 註:部分的按鍵編碼,與其對應之字元的ASCII編碼是重疊的。但要注意,鍵盤編碼與字元ASCII編碼是兩種不同的碼,不可混為一談!

 

1. 非數字鍵盤:

(1) 字母按鍵

按鍵名稱

A

B

C

D

E

F

G

H

I

J

K

L

M

N

O

P

Q

R

S

T

U

V

W

X

Y

Z

按鍵編碼

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

 

(2) 數字按鍵

按鍵名稱

0

1

2

3

4

5

6

7

8

9

按鍵編碼

48

49

50

51

52

53

54

55

56

57

 

(3) 符號按鍵

按鍵名稱

 ~

-

=

\

[

]

;

?

按鍵編碼

192

189

187

220

219

221

186

222

188

190

191

 

(4) 功能鍵

按鍵名稱

Esc

Tab

BackSpace

Caps Lock

Enter

Shift

Shift

Control

Control

Alt

Alt

空白鍵

windows

windows

按鍵編碼

27

9

8

20

13

16

16

17

17

18

18

32

91

92

 

(5) F1~F12

按鍵名稱

F1

F2

F3

F4

F5

F6

F7

F8

F9

F10

F11

F12

按鍵編碼

112

113

114

115

116

117

118

119

120

121

122

123

 

(6) 方向鍵(非數字鍵盤)

按鍵名稱

 

按鍵編碼

37

38

39

40

 

(7) 盤中鍵

按鍵名稱

Insert

Home

Delete

End

Page down

Page down

按鍵編碼

45

36

46

35

33

44

 

 

2. 數字鍵盤

按鍵名稱

0

1

2

3

4

5

6

7

8

9

 /

*

-

+

.

Enter

Num Lock

按鍵編碼

96

97

98

99

100

101

102

103

104

105

111

106

109

107

110

13

144

 

 

 

上一篇:鍵盤滑鼠事件

下一篇:array

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

滑鼠鍵盤事件

※ 註:以下範例皆在Windows Form 應用程式中執行,且表單中已有一個TextBox控制項,名為tetxBox1,是用來顯示輸出訊息的。且,程式碼都寫在

public partial class Form1 : Form{} 的括號{} 之中,也就是說,格式是這樣的:

public partial class Form1 : Form

{

    範例程式碼

}

 

一、簡介

1. 在一個控制項上發生某事件後,程式可以對此事件產生「回應」。要設定一個控制項對事件的回應,可以這麼做:

在表單上點選該控制項à按下屬性面板上的事件按鈕image

à對著事件名稱雙擊滑鼠左鍵à即會在程式碼中產生一個函式,如:

private void 控制項名稱_事件名稱(object sender, 事件參數類別 e)

{

}

在這個函式中就可以撰寫此回應的程式碼。

其中,e事件參數類別物件名稱,可自訂。

 

2. 每種控制項所能夠觸發的事件不盡相同。但大概來說,所有控制項以及表單都能觸發本章所述的「滑鼠事件」與「鍵盤事件」,因此,「滑鼠事件」與「鍵盤事件」也被稱為「通用事件」。相對的,另有一詞為「專用事件」,指的是只有某控制項或者表單才能觸發、而其他控制相不能觸發的事件。

 

 

二、各類事件詳述

1. 滑鼠事件:

滑鼠事件,即是使用者操縱滑鼠將游標置於控制項、對控制項進行動做時,所觸發的事件。常見的滑鼠事件有:

 

事件名稱

觸發此事件的方式

Click

在控制項上按一次滑鼠按鍵

DoubleClick

在控制項上連按二次滑鼠按鍵

MouseClick

在控制項上按一次滑鼠按鍵

MouseDoubleClick

在控制項上連按二次滑鼠按鍵

MouseEnter

把游標移到到控制項之上

MouseLeave

把游標移到到控制項之上然後移開

MouseMove

把游標移到到控制項之上然後持續移動

MouseHover

把游標移到到控制項之上然後停止移動

※ 註二:在控制項上按一次滑鼠按鍵,會依序觸發MouseDownClickMouseUp三個事件。※ 註一:上述的「滑鼠按鍵」,可以是「滑鼠左鍵」、「滑鼠右鍵」、「滑鼠中鍵」。

※ 註三:在控制項上連按二次滑鼠按鍵,會依序觸發MouseDownClickMouseUpMouseDownDoubleClickMouseUp六個事件。

(1) Click事件、DoubleClick事件、MouseEnter事件、MouseLeave事件、MouseHover事件:

Click事件的事件名稱ClickDoubleClick事件的事件名稱DoubleClick MouseEnter事件的事件名稱MouseEnterMouseLeave事件的事件名稱MouseLeaveMouseHover事件的事件名稱MouseHover,他們的事件參數類別都是EventArgs

EventArgs類別並不具有類別成員。

(2) MouseClick事件、MouseDoubleClick事件、MouseDown事件、MouseUp事件、MouseMove事件:

MouseClick事件的事件名稱MouseClickMouseDoubleClick事件的事件名稱MouseDoubleClickMouseDown事件的事件名稱MouseDownMouseUp事件的事件名稱MouseUpMouseMove事件的事件名稱MouseMove,他們的事件參數類別都是MouseEventArgs

(2-1) MouseEventArgs類別物件有幾個常用的成員,如下:

MouseEventArgs類別物件名稱.Button:表示觸發該事件的滑鼠按鍵。其值有三種可能性,MouseButtons.Left代表滑鼠左鍵,MouseButtons.Middle代表滑鼠中鍵,MouseButtons.Right代表滑鼠右鍵。

MouseEventArgs類別物件名稱.X:一個int,表示觸發該事件的游標的X座標值(以該控制項的座標值為座標原點)。

MouseEventArgs類別物件名稱.Y:一個int,表示觸發該事件的游標的Y座標值(以該控制項的座標值為座標原點)。

() 註:ClickDoubleClick事件適用於單純按下控制項,而不需要用到事件的細部資訊(如游標的座標)時。MouseClickMouseDoubleClick事件則適用於需要用到細部資訊時。

(3) 使用範例:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)

{

    textBox1.Text = e.X.ToString() + "," + e.Y.ToString();

}

則當滑鼠在pictureBox1上按下按鍵時,會顯示出游標的X座標、Y座標值(以該控制項的座標值為座標原點)

 

2. 鍵盤事件:

鍵盤事件,即是使用者按下鍵盤按鈕所觸發的事件。常見的鍵盤事件有:

事件名稱

觸發此事件的方式

KeyPress

在控制項上按下「具有ASCII碼的鍵盤按鈕

KeyDown

在控制項上按下任何鍵盤按鈕

KeyUp

在控制項上按下任何鍵盤按鈕後放掉

※ 註一:欲知上述的「具有ASCII碼的鍵盤按鈕」其與對應的ASCII碼,請參看本資料夾的參考資料。鍵盤上並非每一個鍵都有相對應的ASCII碼。

※ 註二:在控制項上按下「具有ASCII碼的鍵盤按鈕,事實上會依序觸發KeyDownKeyPressKeyUp三個事件。

(1) KeyPress事件:

事件名稱KeyPress事件參數類別KeyPressEventArgs

(1-1) KeyPressEventArgs類別的常用成員有:

KeyPressEventArgs類別物件名稱.KeyChar:一個char。乃是這個按鍵按下去之後會產生的字元。用Convert.ToInt32(字元),即回傳該字元的ASCII碼。

(2) KeyDown事件、KeyUp事件:

KeyDown事件的事件名稱KeyDownKeyUp事件的事件名稱KeyUp,兩者的事件參數類別都是KeyEventArgs

(2-1) KeyEventArgs類別的常用成員有:

KeyEventArgs類別物件名稱.Alt:一個bool。若該按鍵是<Alt>按鍵,則其值為true,否則為false

KeyEventArgs類別物件名稱.Control:一個bool。若該按鍵是<Control>按鍵,則其值為true,否則為false

KeyEventArgs類別物件名稱.Shift:一個bool。若該按鍵是<Shift>按鍵,則其值為true,否則為false

KeyEventArgs類別物件名稱.KeyValue:一個int。代表該按鍵的按鍵編碼。關於鍵盤按鍵與按鍵編碼的對照,請看本資料夾中的參考資料。

(3) 範例:

private void textBox1_KeyDown(object sender, KeyEventArgs e)

{

    if (e.KeyValue == 37)  // KeyValue37代表方向鍵的左鍵

    { textBox1.Left--; }

    if (e.KeyValue == 38)  // KeyValue38代表方向鍵的上鍵

    { textBox1.Top--; }

    if (e.KeyValue == 39)  // KeyValue39代表方向鍵的右鍵

    { textBox1.Left++; }

    if (e.KeyValue == 40)  // KeyValue40代表方向鍵的下鍵

    { textBox1.Top++; }

}

在此範例中,於textBox1被選取時按下方向鍵,則textBox1會依照所指示的方向來移動。

 

 

上一篇:檔案對話方塊(openfiledialog savefiledialog)

下一篇:參考資料 鍵盤按鍵名稱與按鍵編碼的對應表

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

檔案對話方塊分成兩種:讀檔對話方塊(OpenFileDialog)而存檔對話方塊(SaveFileDialog)。兩者除了外貌不同之外,其成員函式、成員是一樣的。兩者均是設定介面,其用處是可讓使用者藉由此介面指定一個檔案或檔案路徑。

讀檔對話方塊預設的「外觀」如下:

image

存檔對話方塊預設的「外觀」如下:

image

. 檔案對話方塊常用的成員函式:

(以下的檔案對話方塊名稱,對於讀檔對話方塊而言通常為openFileDialog1openFileDialog2openFileDialog3等等;而對於存檔對話方塊而言通常為saveFileDialog1saveFileDialog2saveFileDialog3等等;

檔案對話方塊名稱.ShowDialog():顯示出該檔案對話方塊,好讓使用者指定檔案路徑。

檔案對話方塊名稱.Reset():將該檔案對話方塊的所有成員之值,調回成預設值。

 

2. 檔案對話方塊常用的成員:

檔案對話方塊名稱.FileName:一個string,即是使用者藉由該檔案對話方塊所選取的檔名(或路徑名)。使用者在上述的ShowDialog()成員函式執行之後,於讀檔對話方塊中選取檔案,按下image 之後(或於存檔對話方塊中選取檔案,按下 image 之後), image

中的路徑就會被存入此成員中。

檔案對話方塊名稱.CheckPathExists一個bool。若為true,表示當選取的路徑不存在時,若使用者按下image (或 image

後,會出現警告訊息。若為false,則不會出現警告訊息。預設值為true

檔案對話方塊名稱.MultiSelect一個bool。若為true,表示一次可以選取多個檔案。若為false,表是一次只能選取一個檔案。

檔案對話方塊名稱.InitialDirectory:一個string,表示一個路徑。是在執行ShowDialog()成員函式而打開檔案對話方塊之後,整個檔案對話方塊所在的路徑。要注意,若路徑之中有反斜線\,記得要用另一個反斜線\將之脫逸。如,假設今路徑為:D:\Ctest\files,那麼InitialDirectory的值就要是"D:\\Ctest\\files "

檔案對話方塊名稱.Filter:一個string,對讀檔對話方塊而言代表這個「檔案類型下拉式選單」image 中的選項(對存檔對話方塊而言則代表這個「存檔類型下拉式選單」 image

中的選項),用來讓使用者能夠在資料夾中過濾檔案。其寫法為:"提示文字一|檔案一|提示文字二|檔案二|…提示文字N|檔案N "。每一個提示文字對應到一個檔案提示文字是顯示在下拉式選單中選項的文字,無實質作用;檔案則有實質作用,即當該下拉式選單的提示文字被選取時,只有該檔案會顯示在資料夾上。檔案的寫法可以是純粹的檔案名,如aaa.bmp,也可以使用萬用字元*,如*.bmp就代表「所有副檔名為bmp的檔案」。

範例如:

private void button1_Click(object sender, EventArgs e)

    openFileDialog1.Filter = "二進位圖檔(*.bmp)|*.bmp|jpg圖檔(*.jpg)|*.jpg";

    openFileDialog1.ShowDialog();

}

則在執行後、按下button1,顯示出的檔案對話方塊的檔案類型下拉式選單」就會是這個樣子:

image

() 註:檔案的類型事實上是由檔案的編碼來決定,而不是副檔名。也就是說,就算把一個bmp檔的副檔名改成jpg,它本質上還是一個bmp檔,只是副檔名錯了。要真正把檔案的本質從bmp改成jpg,應該要用轉檔器將檔案編碼重新編過才對。

 

3. 使用範例:

(1) 以讀檔對話方塊為例:

private void button1_Click(object sender, EventArgs e)

{

    openFileDialog1.ShowDialog();

    string filename = openFileDialog1.FileName;

    pictureBox1.Image = Image.FromFile(filename);  //表示從讀檔對話方塊中指定路徑,並將路徑中檔案讀取至pictureBox1控制項的影像檔

}

(2) 以存檔對話方塊為例:

private void button1_Click(object sender, EventArgs e)

{

    saveFileDialog1.ShowDialog();

    string filename = saveFileDialog1.FileName;

pictureBox1.Image.Save(filename,System.Drawing.Imaging.ImageFormat.Bmp);    //表示從存檔對話方塊中指定路徑,並將pictureBox1控制項的影像檔存入該路徑

}

 

 

 

上一篇:C# 顏色對話方塊(ColorDialog)

下一篇:C# 鍵盤滑鼠事件

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

1. 在介紹顏色對話方塊之前,必須先介紹「顏色類別物件」,也就是「Color物件」。

(1) 建立一個顏色物件的方法:

(1-1) Color 變數名稱 = Color.FromArgb(R, G, B);

其中,RGB0~255int。若其值的設定超出此範圍,程式會出錯。其各表示該顏色的R值、G值、B值。A值預設為255

(1-2) Color 變數名稱 = Color.FromArgb( A, R, G, B);

其中,ARGB0~255int,表示該顏色的A值、R值、G值、B值。

(1-3) Color 變數名稱 = Color.系統內建的顏色名稱;

系統內建的顏色名稱有許多個,在此不詳述。僅舉例,如:

Red(紅色,R=255,G=0,B=0)Green(綠色,R=0,G=255,B=0)Blue(藍色,R=0,G=0,B=255)Black(黑色,R=0,G=0,B=0)White(白色,R=255,G=255,B=255)…等等。

(2) 顏色物件的常用成員:

Color物件名稱.A:該Color物件的A值,為0~255int

Color物件名稱.R:該Color物件的R值,為0~255int

Color物件名稱.G:該Color物件的G值,為0~255int

Color物件名稱.B:該Color物件的B值,為0~255int

Color物件名稱.Name:一個string,表示該Color物件的16進位編碼。此string包含816進位字元,分別代表此顏色的ARGB值。如,若某色的A=255R=23G=128B=5,則此string的值為:ff178005

(3) 顏色物件的常用成員函式:

Color物件名稱.Equals(另一個Color物件名稱):回傳一個bool。若兩個Color物件相同(也就是說,所有成員的值都相同)就回傳true,否則就回傳false

 

2. 顏色對話方塊(ColorDialog)

是一個設定介面,其用處是可讓使用者藉由此介面指定一個顏色。顏色對話方塊預設的「外觀」如下:

image

(1) 顏色對話方塊常用的成員函式:

(以下的顏色對話方塊名稱通常為colorDialog1colorDialog2colorDialog3等等

顏色對話方塊名稱.ShowDialog():顯示出該顏色對話方塊,好讓使用者指定顏色。

顏色對話方塊名稱.Reset():將該顏色對話方塊的所有成員之值,調回成預設值。

(2) 顏色對話方塊常用的成員:

顏色對話方塊名稱.Color:一個Color物件,即是使用者藉由該顏色對話方塊所指定的Font物件。使用者在上述的ShowDialog()成員函式執行之後,於顏色對話方塊中指定顏色,按下image

之後,指定好的顏色就會被存入此成員中。若使用者沒有設定,則預設為黑色(A=255,R=0,G=0,B=0)

顏色對話方塊名稱.AllowFullOpen一個bool。若在該顏色對話方塊中image 的按鈕可用,則其值為true,若不可用為false。預設值是true。而該按鈕的功能是讓使用者能夠更精準的指定色彩。按下該按鈕後,整個顏色對話方塊會多出一個「調色盤」,變成如下的樣子:

image

顏色對話方塊名稱.FullOpen一個bool。若在該顏色對話方塊開啟時就自動顯示調色盤,則其值為true,否則為false。預設值是false。要注意,若AllowFullOpenfalse,縱使FullOpentrue,也依然無法打開調色盤。

顏色對話方塊名稱.ShowHelp:一個bool。若該顏色對話方塊中設有image

按鈕,則其值為true,反之為false。預設值是false

(3) 使用範例:

private void button1_Click(object sender, EventArgs e)

{        

    colorDialog1.FullOpen = true;

    colorDialog1.ShowHelp = true;

    colorDialog1.ShowDialog();

    //以上的順序要正確:先設定要不要顯示按鈕和選項,再顯示整個字型對話方塊

    textBox1.BackColor = colorDialog1.Color;    //這裡將從顏色對放方塊中所設定的顏色應用到textBox1中的背景色

}

 

 

上一篇:字型對話方塊(FontDialog)

下一篇:檔案對話方塊(openfiledialog savefiledialog)

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

1. 在介紹字型對話方塊之前,必須先介紹「字型類別物件」,也就是「Font物件」。

(1) Font物件的宣告方法有許多,在此僅介紹常用者:

Font 物件名稱 = new Font(字型, 大小, 字型樣式);

字型:是個string,是指安裝在目前作業系統中的所有字型。如:"標楷體""細明體""Times New Roman"等等。

大小是個float,表示該字體的大小,以像素為單位。

字型樣式:是個「FontStyle物件」,FontStyle物件的呼叫如下:

FontStyle.Bold   //代表粗體字,如: image

FontStyle.Italic   //代表斜體字,如: image

FontStyle.Regular   //代表正常字體,如: image

FontStyle.Strikeout   //代表該字體附有刪除線,如: image

FontStyle.Underline   //代表該字體附有底線,如: image

注意,字型樣式可寫可不寫。若不寫,則預設為正常字體。

使用範例如:

private void button1_Click(object sender, EventArgs e)

{

    Font A = new Font("標楷體", 12, FontStyle.Underline);

    textBox1.Font = A;

    textBox1.Text = "我是字";

}

則執行後、按下按鈕button1,會在textBox1中顯示:image

(2) Font物件常用的成員:

Font物件名稱.FontFamily.Name:一個string,即是該Font物件的字型。

Font物件名稱.Size:一個float,即是該Font物件的字體大小。

Font物件名稱.Style:一個FontStyle物件」,即是該Font物件的字體樣式。

(3) Font物件常用的成員函式:

Font物件名稱.Equals(另一個Font物件名稱):回傳一個bool。若兩個Font物件相同(也就是說,所有成員的值都相同)就回傳true,否則就回傳false

 

2. 字型對話方塊(FontDialog)

是一個設定介面,其用處是可讓使用者藉由此介面方便設定字型、字大小、字型樣式等等Font物件的成員。字型對話方塊預設的「外觀」如下:

image

(1) 字型對話方塊常用的成員函式:

(以下的字型對話方塊名稱通常為fontDialog1fontDialog2fontDialog3等等

字型對話方塊名稱.ShowDialog():顯示出該字型對話方塊,好讓使用者進行設定。

字型對話方塊名稱.Reset():將該字型對話方塊的所有成員之值,回調成預設值。

(2) 字型對話方塊常用的成員:

字型對話方塊名稱.Font:一個Font物件,即是使用者藉由該字型對話方塊所設定好的Font物件。使用者在上述的ShowDialog()成員函式執行之後,於字型對話方塊中設定字型,按下image

之後,設定好的字型就會被存入此成員中。若使用者沒有設定,則預設為一個new Font("新細明體", 9, FontStyle.Regular)Font物件。

字型對話方塊名稱.Color:一個Color物件(請參看(二)的教學)。可由

image

此選項來設定,預設是黑色。要注意,這個顏色並不代表字體的顏色。事實上,他只不過是由使用者在字型對話方塊中設定的顏色,至於這個顏色是用在什麼地方並不一定,端看程式碼撰寫者如何寫(請參看以下的範例)

字型對話方塊名稱.ShowColor:一個bool。若該字型對話方塊中設有

image

選項,則其值為true,反之為false。預設值是false

字型對話方塊名稱.ShowApply:一個bool。若該字型對話方塊中設有image

按鈕,則其值為true,反之為false。預設值是false

字型對話方塊名稱.ShowHelp:一個bool。若該字型對話方塊中設有image

按鈕,則其值為true,反之為false。預設值是false

字型對話方塊名稱.ShowEffects:一個bool。若該字型對話方塊中設有

image

選項,則其值為true,反之為false。預設值是true

要注意,若此ShowEffects之值為false,就算ShowColor之值為true,該字型對話方塊也不會顯示image 選項。

(3) 使用範例:

private void button1_Click(object sender, EventArgs e)

{        

    fontDialog1.ShowColor = true;

    fontDialog1.ShowApply = true;

    fontDialog1.ShowHelp = true;

    fontDialog1.ShowDialog();

    //以上的順序要正確:先設定要不要顯示按鈕和選項,再顯示整個字型對話方塊

 

    textBox1.Font = fontDialog1.Font;      //這裡將從字型對放方塊中所設定的font物件應用到textBox1

    textBox1.ForeColor = fontDialog1.Color;       //這裡將從字型對放方塊中所設定的Color物件應用到textBox1中、字的顏色

    textBox1.Text = "我是字";

}

 

 

上一篇:各控制項通用的語法

下一篇:顏色對話方塊(ColorDialog)

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

1. 用程式碼操作控制項:

(1) 建立控制項:

控制項種類名稱 控制項種類名稱 = new 控制項種類名稱();

如:

TextBox t1 = new TextBox();

Button my_button = new Button();

(2) =符號存取控制項,乃是「賦址不賦值」:

在程式碼中用=符號呼叫一已存在的控制項,乃是呼叫控制項的參考而非實體。譬如說表單中有一已存在的TextBox(名為textBox1),有程式碼:

TextBox this_t = textBox1;

this_t.Text = "hi!";

則在執行上述程式碼之後,textBox1的顯示文字會變成hi!

(3) 為控制項建立事件處理函式:

其語法為:

控制項名稱.事件名稱+=new EventHandler(事件處理函式名稱);

也可以使用匿名函式的方法,如:

控制項名稱.事件名稱 += new EventHandler

(       

delegate(object 參數一名稱, EventArgs 參數二名稱)

{

//程式碼內容

}

);

其中,事件處理函式應要有兩個參數,一個為object類別、一個為EventArgs 類別。寫法如下:

回傳型別 事件處理函式名稱(object 參數一名稱, EventArgs 參數二名稱)

{ 程式內容 }

範例如:

public void t1_Click(object sender, EventArgs e)

{

    TextBox this_t = sender as TextBox;  //此處要將object物件轉成控制項

    this_t.Text = "OK!";

}

private void Form1_Load(object sender, EventArgs e)

{

    TextBox t1 = new TextBox();

    this.Controls.Add(t1);    //將此控制項收納入表單(在此,this關鍵字代表表單)

    t1.Click += new EventHandler(t1_Click);  //建立事件處理函式

}

 

 

 

2. 各控制項都有的常用、通用成員:

控制項名稱.Autosize:一個bool。若設為true,表示此控制項會隨著其內的文字長短而自動改變大小,若為false則不會。預設是true

控制項名稱.TabIndex:一個int,其值>=0。使用者在表單上按下<Tab>鍵可以變換所選取的控制項,就是依據這個TabIndex做為順序。假設使用者目前所選取的控制項其TabIndex5,那麼按下<Tab>鍵後就會變換到TabIndex6的那項控制項。若沒有任何控項的TabIndex比當前選取之控制項的TabIndex大,則變換到TabIndex0的控制項。

控制項名稱.BackColor:一個Color物件。表示該控制項的背景顏色。

控制項名稱.ForeColor:一個Color物件。表示該控制項的文字顏色。

控制項名稱.Name:一個string。乃是該控制項的名稱,可用其來做識別。

控制項名稱.Left:一個int。表示該控制項的X座標值。整個座標軸的原點是表單的最左上角,往右為X軸正向,往下為Y軸正向,單位為像素。以控制項的最左上角來代表整個控制項的座標位置。

控制項名稱.Top:一個int。表示該控制項的Y座標值。

控制項名稱.Height:一個int。表示該控制項的高度(以像素為單位)

控制項名稱.Width:一個int。表示該控制項的的寬度(以像素為單位)

控制項名稱.Visible:一個bool。若設為true,表示此控制項會顯示在表單上,若為false則不會。預設是true

控制項名稱.Enabled:一個bool。若設為false,表示使用者無法觸發該控制項的任何事件,且其字體會變成灰色。若設為true則可觸發事件。預設為true

控制項名稱.Cursor:一個Cursors物件。表示當游標移到此控制項上時,游標的圖案。Cursors物件可用以下方法來取得:

Cursors.游標圖案名稱

其中,游標圖案名稱的數量很多,在此不詳述。讀者可以到「屬性面板」按下屬性按鈕 後,至 cursor屬性右方欄位設定要怎樣的游標圖案。

 

 

 

3. 各控制項都有的常用、通用成員函式:

控制項名稱.BringToFront():無回傳值。可將該控制項移至畫面的最前景。

控制項名稱.SendToBack():無回傳值。可將該控制項移至畫面的最後景。

父控制項名稱.Controls.GetChildIndex(子控制項名稱):回傳一個整數,代表該子控制項父控制項中的Z-index。其中,父控制項應要是GroupBoxPanel等容器控制項,而子控制項可以是此容器控制項中的任何控制項。

Z-index低的子控制項若和Z-index高的子控制項」重疊顯示時,「Z-index低的子控制項」會顯示在前景。(此規則與javascript相反。Javascript中,「Z-index高的子控制項」會顯示在前景。)

() 註:C#中,屬於同一個父控制項的子控制項們,其Z-index必兩兩不相同。而若設計者在程式碼中宣告子控制項,則先被父控制項所收納的子控制項,其Z-index越低、越容易在前景。譬如:

TextBox t1 = new TextBox();

TextBox t2 = new TextBox();

panel1.Controls.Add(t1);

panel1.Controls.Add(t2);

此程式碼值型之後,t1控制項會在t2控制項之前。

 

 

上一篇:windows media player

下一篇:字型對話方塊(FontDialog)

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

2. 影音播放:

C#可利用Windows Media Player來撥放影音檔(故在作業系統中,要先安裝有Windows Media Player才行。而Windows Media Player預設並不在工具箱中,故需用以下方法才能使用:

打開工具箱,在任何一個控制項上按滑鼠右鍵,會出現如下選單:

image

按下 image ,接著會出現一個「選項工具項目」清單,如:

image

按下由左邊數來第二個標籤( image ),再從清單中勾選Windows Media Player,按下 image

之後,工具箱就會出現Windows Media Player了。之後再將Windows Media Player拖曳至表單中即可使用之。

Windows Media Player(以下簡稱「播放器」)的物件名稱通常為:axWindowsMediaPlayerN(其中,最後一個字元N代表整數)

(1) axWindowsMediaPlayer物件常用、且專用的成員:

axWindowsMediaPlayer物件名稱.URL:一個string。即是欲播放之影音檔在本機中的路徑。若檔案來源是在網際網路上,則此成員就該設成該檔案的網址。

axWindowsMediaPlayer物件名稱.settings:一個settings物件。其常用成員為:

axWindowsMediaPlayer物件名稱.settings.autoStart:一個bool。若為true,則該播放器在程式執行後就會自動播放影音檔,若為false則不會。預設為false

axWindowsMediaPlayer物件名稱.settings.mute:一個bool。若為true,表示該播放器是靜音模式,若為false則為一般模式。預設為false

axWindowsMediaPlayer物件名稱.settings.volume:一個int,其值為1~100。代表該撥放器的音量大小。

axWindowsMediaPlayer物件名稱.Ctlcontrols:一個Ctlcontrols物件。該物件的成員函式可用來控制播放器的播放與否。其用法為:

axWindowsMediaPlayer物件名稱.Ctlcontrols.play():無回傳值。用來撥放影音檔。

axWindowsMediaPlayer物件名稱.Ctlcontrols.pause():無回傳值。用來暫停撥放影音檔。

axWindowsMediaPlayer物件名稱.Ctlcontrols.stop():無回傳值。用來停止撥放影音檔。

 

 

 

上一篇:progressbar

下一篇:各控制項通用的語法

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

 ProgressBar控制項:

ProgressBar控制項又稱「進度條」,可以即時顯示某一個處理過程目前的進度為何。其外觀如下:image

 

(1) 其常用、且專用的成員有:

ProgressBar控制項.Minimun:一個int。乃是進度為零時的代表值(此時ProgressBar控制項的外觀是:image

。預設是0

ProgressBar控制項.Maximun:一個int。乃是進度全滿時的代表值(此時ProgressBar控制項的外觀是:image

 

。預設是100

ProgressBar控制項.Value:一個int。乃是當前進度的代表值。此值必須介於ProgressBar控制項.MinimunProgressBar控制項.Maximun之間。若當前進度越高,此值越大,和ProgressBar控制項的綠色部分也越長。

ProgressBar控制項.Step:一個int。必須搭配ProgressBar控制項.PerformStep()此成員函式使用。預設是10

(2) 其常用、且專用的成員函式有:

ProgressBar控制項.PerformStep():無回傳值。每執行一次此函式,ProgressBar控制項.Value的值就會增加,增加的大小為ProgressBar控制項.Step

(3) 範例:

progressBar1.Minimum = 0;

progressBar1.Maximum = 10;

progressBar1.Step = 1;

double N=100000000;

for (double i = 0; i < N; i++)

{

        if (i % (N/10) == 0)

        { progressBar1.PerformStep(); }

}

 

 

 

 

上一篇:日期與時間控制項

下一篇:windows media player

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

日期與時間控制項包括MonthCalendar控制項、DateTimePicker控制項、Timer控制項。

1. MonthCalendar控制項:

即是一個月曆,可供使用者觀看、點選日期。其外觀如下:

image

(1) MonthCalendar控制項的常用、且專用成員有:

MonthCalendar控制項名稱.Font:一個Font物件。表示該MonthCalendar控制項上所顯示之文字的字體。

MonthCalendar控制項名稱.MaxDate:一個DateTime物件。表示該MonthCalendar控制項可供點選日期中,最大的日期。

MonthCalendar控制項名稱.MinDate:一個DateTime物件。表示該MonthCalendar控制項可供點選日期中,最小的日期。

MonthCalendar控制項名稱.ShowToday:一個bool。若為true,表示要在該MonthCalendar控制項上顯示另外說明今天的日期是幾號,若為false則否。預設是true

MonthCalendar控制項名稱.TodayDate:一個DateTime物件。即是程式執行當天的日期(時間為12:00:00)

MonthCalendar控制項名稱.ShowTodayCircle:一個bool。在若為true,表示在該MonthCalendar控制項上顯示另外說明今天的日期是幾號時,要用方框框住今天日期,若為false則否。預設是true。注意,此項成員只有在MonthCalendar控制項名稱.ShowTodaytrue時才有意義。

MonthCalendar控制項名稱. ShowWeekNumbers:一個bool。若為true,表示在該MonthCalendar控制項上的每星期前,用數字顯示該週是該年中的第週,若為false則否。預設是false

MonthCalendar控制項名稱.TitleBackColor:一個Color物件。表示該MonthCalendar控制項之標題的背景顏色。預設是藍色。

MonthCalendar控制項名稱.TitleForeColor:一個Color物件。表示該MonthCalendar控制項之標題的文字顏色。預設是白色。

MonthCalendar控制項名稱.TrailingForeColor:一個Color物件。MonthCalendar控制項中,月曆除了顯示本月的日期外,也會夾雜一些非本月的日期,這些非本月的日期最好不要用和本月日期一樣的顏色,以方便使用者快速辨認出兩者。這個MonthCalendar控制項名稱.TrailingForeColor就是非本月日期的顏色。預設是灰色。

MonthCalendar控制項名稱.MaxSelectionCount:一個intMonthCalendar控制項中可供使用者一次點選多個日期(用滑鼠拖拉的方式),此成員就是使用者一次能點選之日期數目的最大值。

MonthCalendar控制項名稱.SelectionStart:一個DateTime物件。若使用者一次點選多個日期,則此成員就代表這些日期中,最先被使用者點選的那個。

MonthCalendar控制項名稱.SelectionEnd:一個DateTime物件。若使用者一次點選多個日期,則此成員就代表這些日期中,最後被使用者點選的那個。

(2) MonthCalendar控制項的常用、且專用事件有:

DateSelected事件:當使用者在該MonthCalendar控制項中點選日期時,就會觸發此事件。其事件名稱DateSelected,其事件參數類別DateRangeEventArgsDateRangeEventArgs類別的常用類別成員如下:

DateRangeEventArgs類別物件.Start若使用者一次點選多個日期,則此成員就代表這些日期中,最先被使用者點選的那個。

DateRangeEventArgs類別物件.End若使用者一次點選多個日期,則此成員就代表這些日期中,最後被使用者點選的那個。

 

2. DateTimePicker控制項:

其功用是讓使用者選取日期,被選取日期會用文字方式顯示。其外觀如下:

image

要選取日期時,可按下按鈕,就會跳出一個附屬的MonthCalendar控制項,於該MonthCalendar控制項中選取日期後(只能選取一個日期,不能選取多個日期)MonthCalendar控制項就會消失。

(1) MonthCalendar控制項的常用、且專用成員有:

DateTimePicker控制項名稱.Value:一個DateTime物件。表示在該DateTimePicker控制項中被選中的日期。預設為程式執行當日、當時。

DateTimePicker控制項名稱.CalendarFont:一個Font物件,表示該附屬的MonthCalendar控制項中文字的字體。

DateTimePicker控制項名稱.CalendarForeColor:一個Color物件,表示該附屬的MonthCalendar控制項中文字的顏色。預設是黑色。

DateTimePicker控制項名稱.CalendarMonthBackGround:一個Color物件,表示該附屬的MonthCalendar控制項的背景顏色。

DateTimePicker控制項名稱.CalendarTitleForeColor:一個Color物件,表示該附屬的MonthCalendar控制項的標題文字顏色。預設是白色。

DateTimePicker控制項名稱. CalendarTitleBackColor:一個Color物件,表示該附屬的MonthCalendar控制項的標題背景顏色。預設是藍色。

DateTimePicker控制項名稱.CalendarTrailingForeColor:一個Color物件,表示該附屬的MonthCalendar控制項中非本月日期的顏色。預設是灰色。

DateTimePicker控制項名稱.DropDownAlign:一個LeftRightAlignment物件,用來設定DateTimePicker控制項和其附屬的MonthCalendar控制項的對齊方式。LeftRightAlignment物件可用以下方法取得:

LeftRightAlignment.Left:表示靠左對齊,這是預設值。

LeftRightAlignment.Right:表示靠右對齊。

DateTimePicker控制項名稱.MaxDate:一個DateTime物件,表示在附屬的MonthCalendar控制項中所能選取的日期中,最大的日期。

DateTimePicker控制項名稱.MinDate:一個DateTime物件,表示在附屬的MonthCalendar控制項中所能選取的日期中,最小的日期。

(2) DateTimePicker控制項的常用、且專用事件有:

ValueChanged事件:當使用者在附屬的MonthCalendar控制項中點選日期時,就會觸發此事件。其事件名稱ValueChanged,其事件參數類別EventArgsEventArgs類別沒有類別成員。

 

3. Timer控制項:

Timer控制項,也就是所謂的「計時器」。使用者利用計時器計時,命令程式每隔一段時間間隔就執行某程式碼。但要非常注意的是,Timer控制項只在程式沒有執行命令的時候才在計時,也就是說Timer只能計算程式的閒置時間,不能用來計算程式碼執行的時間。假設有段程式碼要執行5秒鐘,則在這5秒鐘之間,Timer就一直停頓,不會做任何計時功能,直到程式碼執行完畢才又開始計時。若要計算某段程式碼執行的時間,應用Stopwatch物件。

(1) Timer控制項的常用、且專用成員有:

Timer控制項名稱.Interval:一個int,非負整數。乃是該Timer控制項的時間間隔。單位為毫秒。預設值是100,也就是100毫秒、0.1秒。

(2) Timer控制項的常用、且專用成員函式有:

Timer控制項名稱.Start():無回傳值。此函式的功用在於使 Timer控制項開始計時(程式剛開始執行時,Timer控制項尚未開始計時)。

Timer控制項名稱.Stop():無回傳值。此函式的功用在於使 Timer控制項停止計時。

(3) Timer控制項的常用、且專用事件有:

Tick事件:若Timer控制項已開始計時,則每隔一段時間間隔,就觸發一次此事件。其事件名稱Tick,其事件參數類別EventArgs。而EventArgs類別並不具有類別成員。

 

 

上一篇:messagebox

下一篇:progressbar

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

MessageBox控制項,不像其他控制項可從工具列拿出來放在表單上,它是要等到一個「MessageBox.Show函式」被執行時,才會顯示出來。MessageBox.Show函式的使用說明如下:

MessageBox.Show(string 提示文字 [, string 標題] [, MessageBoxButtons 按鈕列] [,MessageBoxIcon 圖示] [,MessageBoxDefaultButton 預設按鈕]);

此函式回傳一個DialogResult物件。此物件有七個值:

DialogResult.OK:若回傳此值,表示使用者按了MessageBox中的image

鍵。

DialogResult.Cancel:若回傳此值,表示使用者按了MessageBox中的image

鍵。

DialogResult.Yes:若回傳此值,表示使用者按了MessageBox中的image

鍵。

DialogResult.No:若回傳此值,表示使用者按了MessageBox中的image

鍵。

DialogResult.Abort:若回傳此值,表示使用者按了MessageBox中的image

鍵。

DialogResult.Retry:若回傳此值,表示使用者按了MessageBox中的image

鍵。

DialogResult.Ignore:若回傳此值,表示使用者按了MessageBox中的image

鍵。

MessageBox.Show函式的各參數,即是代表MessageBox中各個子部分。例如,下圖是一個MessageBox與其各參數代表的子部分:

image

預設按鈕 image

其中,按鈕列是個MessageBoxButtons物件。MessageBoxButtons物件可用以下方法取得:

MessageBoxButtons.OK:按鈕列顯示為image

。這是預設值。

MessageBoxButtons.OKCancel:按鈕列顯示為image

MessageBoxButtons.YesNo:按鈕列顯示為 image

MessageBoxButtons.YesNo:按鈕列顯示為 image

MessageBoxButtons.YesNoCancel:按鈕列顯示為 image

MessageBoxButtons.RetyrCancel:按鈕列顯示為 image

MessageBoxButtons.AbortRetryIgnore:按鈕列顯示為 image

其中,圖示是個MessageBoxIcon物件。MessageBoxIcon物件可用以下方法取得:

MessageBoxIcon. None:不顯示圖示。這是預設值。

MessageBoxIcon. Asterisk:圖示顯示為image

MessageBoxIcon.Error:圖示顯示為 image

MessageBoxIcon.Exclamation:圖示顯示為 image

MessageBoxIcon.Question:圖示顯示為 image

其中,預設按鈕是個MessageBoxDefaultButton物件。MessageBoxDefaultButton物件可用以下方法取得:

MessageBoxDefaultButton.Button1:以從按鈕列左起第一個按鈕做為預設按鈕。這是預設值。

MessageBoxDefaultButton.Button2:以從按鈕列左起第二個按鈕做為預設按鈕。

MessageBoxDefaultButton.Button3:以從按鈕列左起第三個按鈕做為預設按鈕。

範例:

int money = 100;

int power = 50;

private void button1_Click(object sender, EventArgs e)

{

      DialogResult R = MessageBox.Show("是否要打工?","打工",MessageBoxButtons.YesNo,MessageBoxIcon.Question);

      if (R == DialogResult.Yes) { money += 10; power -= 5; }

      textBox1.Text = "已有" + money.ToString() + ",剩下的能量為" + power.ToString();

}

 

 

 

 

上一篇:picturebox

下一篇:日期與時間控制項

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

PictureBox控制項可以讓使用者擺放圖片,並對此圖片進行編輯與操作。

1. PictureBox控制項的常用、且專用成員:

PictureBox控制項名稱.Image:一個Image物件,表示該PictureBox控制項所要顯示的圖片。

PictureBox控制項名稱.SizeMode:一個PictureBoxSizeMode物件,表示該PictureBox控制項所顯示之圖片的擺放方式。PictureBoxSizeMode物件可用以下方法來取得:

PictureBoxSizeMode.Normal:將圖片的左上角對準PictureBox控制項的左上角。

PictureBoxSizeMode.CenterImage:將圖片的中心對準PictureBox控制項的中心。

PictureBoxSizeMode.AutoSize:將PictureBox控制項的大小縮放成和圖片一樣。PictureBoxSizeMode.StretchImage:將圖片的大小縮放成和PictureBox控制項一樣。可能改變圖片原本的比例。

PictureBoxSizeMode.Zoom:將圖片的大小縮放(但不改變圖片原本比例)、使之能在PictureBox控制項中完整顯示,並且將圖片的中心對準PictureBox控制項的中心。

2. PictureBox控制項的常用、且專用成員函式:

PictureBox控制項名稱.Hide():無回傳值。其功用是隱藏該PictureBox控制項中所擺放的圖片。

PictureBox控制項名稱.Show():無回傳值。其功用是在該PictureBox控制項中所擺放的圖片被隱藏時,將之顯示出來。

 

 

上一篇:combobox

下一篇:messagebox

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

ComboBox控制項提供提一個下拉式選單,供使用者在此選單內點選選項(只能單選)

1. ComboBox控制項常用、且專用的成員:

ComboBox控制項名稱.Text:一個string。乃是在使用者還沒有拉開下拉式選單時,ComboBox控制項中顯示的提示文字。

ComboBox控制項名稱.DropDownStyle:一個ComboBoxStyle物件。代表該ComboBox控制項之下拉式選單的外觀型式。ComboBoxStyle物件可用以下方法取得:

ComboBoxStyle.DropDown:顯示下拉式選單,且使用者可以直接在ComboBox控制項中輸入文字。這是預設值。

ComboBoxStyle.DropDownList:顯示下拉式選單,但使用者不可直接在ComboBox控制項中輸入文字。

ComboBoxStyle.Simple:不顯示下拉式選單。使用者只能在ComboBox控制項中使用鍵盤的上下鍵,來選取選項。

ComboBox控制項名稱.DropDownWidth:一個int。表示該下拉式選單的寬度,單位是像素。若此成員之值低於ComboBox控制項名稱.Width之值,在顯示時會自動調回ComboBox控制項名稱.Width之值。

ComboBox控制項名稱.SelectedItem:一個選項。代表使用者在該下拉式選單中所選取的選項。ComboBox控制項名稱.SelectedItem.ToString()為該選項之內容文字。

ComboBox控制項名稱. SelectedIndex:一個int。代表使用者在該下拉式選單中所選取的選項,其在下拉式選單中的序數。

ComboBox控制項名稱.Items

此物件代表該ComboBox控制項之下拉式選單中,所有選項的集合。其用法很像是個矩陣。

(1-1) ComboBox控制項名稱.Items常用、且專用的成員有:

() ComboBox控制項名稱.Items[N]:一個選項。其中N為序數。代表該下拉式選單中之第N個選項。而ComboBox控制項名稱.Items[N].ToString()即是此選項的內容文字。

() ComboBox控制項名稱.Items.Count:一個int。代表該下拉式選單中之子控制項的數目。

(1-2) ComboBox控制項名稱.Items常用、且專用的成員函式有:

() ComboBox控制項名稱.Items.Add(內容):回傳一個int。可加入一個選項到此下拉式選單中,回傳值即是這個選項在下拉式選單中的序數。而內容即是此選項的顯示出來的內容文字,其變數型態可以是stringintdouble…(在顯示時,均會轉換成文字的方式顯示)

() ComboBox控制項名稱.Items.Remove(內容):無回傳值。可將具有該內容的選項自該下拉式選單中移除。

() ComboBox控制項名稱.Items.RemoveAt( int N ):無回傳值。N是序數。可將此下拉式選單中的第N個選項給移除。

() ComboBox控制項名稱.Items.Clear():無回傳值。刪除此下拉式選單中的所有選項。

 

2. ComboBox控制項常用、且專用的事件:

SelectedIndexChanged事件:當使用者改變了下拉式選單中所選取的選項時,會觸發此事件。其事件名稱是SelectedIndexChanged事件參數類別EventArgsEventArgs類別沒有類別成員。

 

3. 使用範例:

private void Form1_Load(object sender, EventArgs e)   //控制項設定

{

      comboBox1.Text = "請選擇本月最佳員工:";

      comboBox1.Items.Add("周義書");

      comboBox1.Items.Add("楊采樓");

      comboBox1.Items.Add("唐建浩");

}

 

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{    //當使用者選取選樣項時產生的效果

      textBox1.Text = comboBox1.SelectedItem.ToString();

}

顯示如下:

image

 

 

 

上一篇:容器控制項

下一篇:picturebox

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

 

 

當表單中的控制項過多的時候,容器控制項可以幫程式設計者管理、分類這些控制項。一個容器控制項中,可以放入許多的控制項程式設計者只要將控制項用滑鼠拖曳至容器控制項中即可。這些被放入容器控制項中的控制項,可稱之為容器控制項的子控制項。容器控制項包括GroupBox控制項、Panel控制項。

 

1. GroupBox控制項:

即是一個區塊。在此區塊中可以放置許多不同的控制項。

(1) GroupBox控制項常用、且專用的成員:

GroupBox控制項名稱.Text:一個String。該GroupBox控制項的標題文字,

通常表示著這個分類的類別。

GroupBox控制項名稱.Controls:此物件代表該GroupBox控制項中所有子控制項的集合。其用法很像是個矩陣。

(1-1) GroupBox控制項名稱.Controls常用、且專用的成員有:

() GroupBox控制項名稱.Controls[N]:一個控制項。其中N為序數。代表該GroupBox控制項中之第N個子控制項。

() GroupBox控制項名稱.Controls.Count:一個int。代表該GroupBox控制項中之子控制項的數目。

(1-2) GroupBox控制項名稱.Controls常用、且專用的成員函式有:

() GroupBox控制項名稱.Controls.Add( 控制項 ):無回傳值。可將控制項將入此GroupBox控制項。之後可以在設定關於該的控制項種種成員。有一點要注意,即是在設定此控制項之位置時,座標原點是以GroupBox控制項為主。控制項的宣告方法為:

控制項種類 控制項名稱 = new 控制項種類();

範例如:

TextBox A = new TextBox();  // A是自訂的TextBox控制項名稱

groupBox1.Controls.Add(A);    // groupBox1是已存在的GroupBox控制項名稱

() GroupBox控制項名稱.Controls.Remove( 控制項 ):無回傳值。可將該控制項自此GroupBox控制項中移除。

() GroupBox控制項名稱.Controls.RemoveAt( int N ):無回傳值。N是序數。可將此GroupBox控制項中的第N個子控制項給移除。

() GroupBox控制項名稱.Controls.Clear():無回傳值。刪除此GroupBox控制項中的所有子控制項。

 

2. Panel控制項:

GroupBox相像,也是一個可以放置許多不同之子控制項的區塊。用法也和GroupBox頗類似。這兩者的主要差別在於:Panel控制項沒有Text成員、而GroupBox控制項有,Panel控制項可以使用捲軸、而GroupBox控制項不可。

(1) Panel控制項常用、且專用的成員:

Panel控制項名稱.Controls:此成員和GroupBox控制項名稱.Controls相同,是代表該Panel控制項中所有子控制項的集合。其用法也一樣,在此不贅述。

Panel控制項名稱.AutoScroll:一個bool。若為true,代表在子控制項超出Panel控制項的範圍時,Panel控制項會自動產生出一個捲軸,以供使用者拖拉,若為false則否。預設是false

Panel控制項名稱.BorderStyle:一個BorderStyle物件。表示該Panel控制項的邊框形式。BorderStyle物件可用以下方法來取得:

BorderStyle.None:無框線(這是預設值)

BorderStyle.Fixed3D:立體凹凸框線。

BorderStyle.FixedSingle:實線框線。

 

 

 

 

上一篇:richtextbox

下一篇:combobox

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

RichTextBox控制項:

RichTextBox控制項繼承了TextBox控制項所有的成員、成員函式、事件,是比TextBox更大的文字控制項。以下所介紹的,是RichTextBox控制項專用、而TextBox控制項不具有者。

(1) RichTextBox控制項「特殊的」專用成員(此「特殊的」專用成員無法在屬性面板中設定,只能藉由程式碼來設定):

RichTextBox控制項名稱.SelectedText:一個string。若使用者有在該RichTextBox中選取文字,則該文字字串就被儲存在此成員裡。

RichTextBox控制項名稱.SelectionLength:一個int。代表使用者在該RichTextBox中所選取之文字的長度。

RichTextBox控制項名稱.SelectionColor:一個Color物件。代表使用者在該RichTextBox中所選取之文字的顏色。

RichTextBox控制項名稱.SelectionFont:一個Font物件。代表使用者在該RichTextBox中所選取之文字的字型。

RichTextBox控制項名稱.SelectionAlignment:一個HorizontalAlignment物件,代表使用者在該RichTextBox中所選取之文字的文字對齊方式。HorizontalAlignment物件可用以下方法取得:

HorizontalAlignment.Left:文字靠左對齊(預設值)

HorizontalAlignment.Center:文字正中對齊。

HorizontalAlignment.Right:文字靠右對齊。

RichTextBox控制項名稱.SelectionProtected:一個bool。若為true,代表使用者在該RichTextBox中所選取之文字是「受保護的」,即這些文字不能被編輯或更改,若為false則是不受保護的情況。一般情況下,所選取的文字都是不受保護的,故此成員之預設值為false

(2) RichTextBox控制項的常用、且專用成員函式:

RichTextBox控制項名稱.Clear():無回傳值。可清除該RichTextBox控制項的內容文字。

RichTextBox控制項名稱.Find(string 子字串):可在該RichTextBox控制項的內容文字中尋找子字串,若有找到,則回傳該子字串的序數。若沒找到就回傳-1。若該RichTextBox控制項的內容文字中有超過一個子字串,則只回傳最先被找到的那個子字串的序數。

RichTextBox控制項名稱.LoadFile(string 檔案路徑, RichTextBoxStreamType.PlainText ):無回傳值。可將檔案路徑中之檔案的文字內容讀入該RichTextBox控制項之中。

RichTextBox控制項名稱.SaveFile(string 檔案路徑, RichTextBoxStreamType.PlainText ):無回傳值。可將該RichTextBox控制項的內容文字存入檔案路徑中之檔案。

 

 

 

 

上一篇:textbox

下一篇:容器控制項

按此前往C#完整教學目錄

文章標籤

埃伯 發表在 痞客邦 留言(0) 人氣()

«12 3