C# 學習細節記錄
阿新 • • 發佈:2021-07-16
一、Form 窗體使用
使用 form 做為執行時間長的方法時,阻止使用者操作時使用 模態對話方塊
Show() 非模態對話方塊
ShowDialog() 模態對話方塊
Form.Dispose() 方法容易出現閃黑屏的情況
Form.Close() 方法不會
二、跨執行緒操作窗體
需要通過委託來實現
1、 匿名方法,
官方介紹:delegate
運算子建立一個可以轉換為委託型別的匿名方法:
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
2、lambda表示式
Func<int, int, int> sum = (a, b) => a + b;
3、使用delegate
運算子時,可以省略引數列表。 如果這樣做,可以將建立的匿名方法轉換為具有任何引數列表的委託型別,如以下示例所示:
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();
Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);
1 例子: 2 第一種方法: 3 private delegate void Mydele(int a); 4 Mydele mydele; 5 void run(int a) 6 { 7 mydele = run; 8 if(this.InvokeRequired) 9 { 10 this.Invoke(mydele, a); 11 } 12 else 13 {14 //run的程式碼 15 this.Text = a.ToString();//必須在這加上要跑的程式碼,否則沒用 16 } 17 } 18 第二種方法: 19 void run(int a) 20 { 21 this.Invoke((Action)delegate { this.Text = a.ToString(); }); 22 23 } 24 或 25 void run(int a) 26 { 27 this.Invoke((Action<int>)delegate(int ab) { this.Text = a.ToString(); },a); 28 } 29 或 30 void run(int a) 31 { 32 this.Invoke((Action)(() =>{ this.Text = a.ToString(); })); 33 } 34 或 35 void run(int a) 36 { 37 this.Invoke((Action<int>)((aa) =>{ this.Text = a.ToString(); }),a); 38 }