C#程序設計及應用教程總複習

轉載於憨憨:https://blog.csdn.net/qq_43874613/article/details/103756506

第1章

1.基本概念

(1).NET框架包括兩個主要組件:一個是公共語言運行庫(CLR),另一個是類庫。

公共語言類型庫提供.NET應用程序所需要的核心服務;類庫是與公共語言運行庫緊密集成的可重用的類的集合,旨在爲開發和運行.NET應用程序提供各種支持。

(2)命名空間的概念:命名空間是對類的一種劃分。(關鍵字namespace)

命名空間和類庫的關係:命名空間可以包含子命名空間,類劃分在某個命名空間下。
引用命名空間用什麼關鍵字:using

(3)using關鍵字的3種用法:

作爲引用指令,用於爲命名空間導入其他命名空間中定義的類型;
作爲別名指令,用於簡化命名空間的表達形式;
作爲語句,用於定義一個範圍。

(4)控制檯應用程序從哪開始運行(Main方法)

(5)WPF應用程序的入口(App.xaml),WPF應用程序從哪開始運行(Main方法)。

2.控制檯應用程序的輸入與輸出

(1)如何接收從控制檯輸入的字符串。

string s = Console.ReadLine();     讀入字符串    
Console.ReadKey();       讀入字符,返回ConsoleKeyInfo類型的對象
Console.Write(s);   輸出字符串
Console.WriteLine(s);    輸出字符串,自動輸出回車換行符(“\r\n”)
int a1=3,a2=4,a3=5;  
Console.WriteLine("{1},{2},\n{0}",a1,a2,a3);
  • 1
  • 2
  • 3
  • 4
  • 5

(2)格式化符:D、F的使用方法

{N} {N,M} {N:格式碼} {N,M:格式碼}
N:參數序列中的輸出序號
M:參數輸出的最小長度,左負右正
格式碼D/d:輸出十進制整數
Console.WriteLine(“{0:D5}”,10); 輸出:00010
格式碼F/f:小數點後固定位數(四捨五入),F後面不指定位數時,默認爲兩位
Console.WriteLine(“{0:F}”,10); 輸出:10.00
Console.WriteLine(“{0:F2}”,12345.6789); 輸出:12345.68

第2章

1.基本概念

(1)值類型和引用類型分別包含哪些類型;注意數組和結構是什麼類型。
值類型和引用類型的區別(從保存數據和存儲位置等說明,見表2-2)

在這裏插入圖片描述
區別:值類型變量直接在堆棧中保存變量的值,引用類型的變量在堆棧中保存的是對象的引用地址。
在這裏插入圖片描述

(2)各種基本數據類型的定義和使用。

注意布爾類型(bool)、字符類型(char)和枚舉(enum)的定義
1)bool類型只有兩個值:true和false。條件表達式的運算結果必須是bool型的。

bool myBool=falsebool b=(i>0&&i<10);
  • 1

2)字符類型屬於值類型,用char表示,表示單個Unicode字符(一個Unicode字符佔兩字節,長度爲1)。字符型常量用單引號引起來。

char c1=‘A’;

    3)將一組常量用一個類型來表示,該類型稱爲枚舉類型。
    默認情況下,系統使用int型作爲基礎類型,且第一個元素的值爲0,其後每一個元素的值依次遞增1

    public enum MyColor{Red,Green,Blue}//常量值分別爲0,1,2
    public enum Days{Sun=0,Mon=1,Tue=2}//Sun:0,Mon:1,Tue:2
    • 1

    也可以在定義時只指定第1個常量的值,此時後面的常量值會自動遞增1:

    public enum MyColor{Red=1,Green,Blue}//常量值分別爲1,2,3

      如果希望基礎類型不是int型,定義時必須用冒號指定是哪種基礎類型:

      public enum Number:byte{x1=3,x2=5 }//常量值分別爲3,5
      public enum MyNum:byte{x1=255,x2};這是錯誤的定義!x2遞增1後應該是256,而byte類型的取值範圍是0~255,產生編譯錯誤。
      • 1
      MyColor myColor=MyColor.Red;
      Console.WriteLine(myColor);//輸出Red
      Console.WriteLine((int)myColor);//輸出0
      • 1
      • 2

      2.基本類型之間的轉換

      (1)如何將字符串s轉換爲整型、浮點型,是否需要異常處理。

      int n1 = int.Parse(s);  
      int n2;  var b1 = int.TryParse(s, out n2);
      double d1 =double.Parse(s); 
      double d2;  var b2 = double.TryParse(s, out d2);
      • 1
      • 2
      • 3

      (2)int和char之間的轉換;如何判斷一個字符是字母還是數字。

      int a = 50;       char b = 'a';
      nt a1 = (int)b;    char c1 = (char)a;
       var b1 = char.IsDigit(b);  
       var b2 = char.IsNumber(b);
      var b3 = char.IsLetter(b); 
      var b4 = char.IsLetterOrDigit(b);
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      3.字符串的常用處理方法

      (1)求字符串長度。(不用區分中英文,有多少個字長度就是多少)

      var s = "abEF123張三456";     
      var n = s.Length;    //n=12
      • 1

      (2)求子字符串的起始位置(IndexOf)
      IndexOf:求某個字符或者子字符串在字符串中出現的位置。

      var  s=”abcdcd123123”;
      var n1=s.IndexOf(“cd”);
      public int IndexOf(string s,int startIndex):從startIndex處開始查找s在字符串中首次出現的從零開始索引的位置,不存在返回-1.
      • 1
      • 2

      (3)求子字符串(Substring):得到一個字符串中從某個位置開始的子字符串

      var s=”abcdcd123123”;
      var s1=s.Substring (1,3);      //bcd(取3個)
      var s2=s.Substring(3);   //dcd123123
      • 1
      • 2

      (4)求字符串中某個位置的字符、插入、刪除字符。

      var s = "abcdcd123123"; 
      char c1 = s[3];  //d
      var s1 = s.Insert(2,“xy”);     //abxycdcd123123
      string s2 = s.Remove(2);      //ab
      string s3 = s.Remove(21);        //abdcd123123
      string s2 = s.Replace(‘c’,‘h’);       //abhdhd123123   
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      4.數組

      (1)一維數組的基本定義方法、賦初值、訪問每個元素。

      int[] a=new int[30];
      a[0]=23;
      a[29]=67;
      • 1
      • 2

      (2)一維數組的排序、逆序、求最大值、最小值、平均值。

      int[] a={23,64,15,72,36};

        Array類:
        Sort方法:將一維數組中的元素按照升序排列
        Array.Sort(a);將數組a升序排序,結果保存在a中
        Reverse方法:反轉一維數組中的元素
        Array.Reverse(a);反轉數組a的值,結果保存在a中a.Average(); a.Sum(); a.Max(); a.Min();

        (3)如何拆分字符串s到數組a中;如何合併某個數組到字符串s中。

        string s = "a1,a2,a3 32 25";
        var a1 = s.Split(','); //分隔符爲, 
        var a2 = s.Split(',', ' ');//分隔符爲,和空格
        var b1 = string.Join(",",a1);   b1=“a1,a2,a3 32 25var b2 = string.Join(",", a2);  b2=“a1,a2,a3,3225
        • 1
        • 2
        • 3
        • 4

        5.數據類型轉換

        (1)隱式轉換和顯式轉換的概念及使用場合(P52)

        Ø 隱式轉換:就是系統默認的、不需要加以聲明就可以進行的轉換。

        場合:如果是從低精度、小範圍的數據轉換爲高精度、大範圍的數據類型,可以使用隱式轉換。

        Ø 顯式轉換:又稱強制轉換,需要用戶明確地指定轉換的類型。

        場合:所有的隱式轉換也都可以採用顯式轉換的形式來表示;將大範圍類型的數據轉換爲小範圍類型的數據時,必須使用顯式轉換。

        (2)裝箱和拆箱的概念

        裝箱:將值類型隱式地轉換爲Object類型

        拆箱:顯示地把Object類型轉換爲值類型

        6.流程控制語句

        掌握流程控制語句的基本用法

        (1)順序

        (2)分支:

        if(...){...}
        if(...){...}else{...}
        if(...){...}else
        if(...){...}else if(...){...}else{...}
        switch(s){case:.. case :.. case :..default...}
        • 1
        • 2
        • 3
        • 4

        (3)循環:

        for(...){...}
        

        foreach(...in ...){...}

        while(...){...} //條件爲true的情況下,重複執行循環體內的語句序列,直到條件爲false爲止。

        do{...}while(...) //do語句循環體內的程序至少會執行一次,每次執行後再判斷條件是否爲true,如果爲true,則繼續下一次循環。

        • 1
        • 2
        • 3
        • 4
        • 5
        • 6

        (4)跳轉:

        continue:不再執行continue語句後面循環塊內剩餘的語句,而是將控制直接傳遞給下一次循環。

        break:退出最近的封閉switch、while、do、for、或foreach語句

        (5)異常處理:

        try-catch:執行try塊內的程序,如果try塊中出現了異常,程序就立刻跳轉到catch塊中執行。

        try-catch-finally:如果try後面有finally塊,不論是否出現異常,也不論是否有catch塊,finally塊總是會執行的,即使try內使用跳轉語句或return語句

        throw:重新拋出異常

        第3-4章

        1.類

        (1)類的定義與成員組織

        類:類是封裝數據的基本單位,用來定義對象具有的特徵(字段、屬性等)和可執行的操作(方法、事件等)

        類成員包括:字段、構造函數、屬性、方法(運算符、索引器、析構函數等)

        成員分爲:靜態成員(static)和實例成員

        Ø 靜態成員:

        使用 static關鍵字修飾,通過類名調用靜態成員。

        表示類或成員加載到內存中只有一份。

        可用於類、字段、方法、屬性、運算符、事件和構造函數,但不能用於索引器、析構函數或者類以外的類型。

        靜態方法可以被重載但不能被重寫。

        兩種常見的用法:記錄已實例化對象的個數;存儲必須在所有實例之間共享的值

        Ø 實例成員:使用實例名調用實例成員。

        (2)訪問修飾符public、private、protected、partial的含義

        public:類的內部和外部代碼都可以訪問

        private:類的內部可訪問,類的外部無法訪問。如果省略類成員的訪問修飾符,默認爲private。

        protected:類的內部或者從該類繼承的子類可以訪問。

        partial:可將類的定義分佈在多個文件中,編譯器編譯帶有partial修飾符的類時,會自動將這些文件合併在一起。

        (3)
        構造函數、默認構造函數、重載構造函數。P74

        構造函數是創建對象時自動調用的函數。

        Ø 實例構造函數:每創建一個對象,都會先通過new關鍵字指明調用的構造函數,這種構造函數稱爲實例構造函數。

        Child child = new Child();

          Ø 默認構造函數:每個類要求必須至少有一個構造函數。如果沒有聲明構造函數,系統會自動爲該類提供一個不帶參數的默認構造函數。

          Ø 重載構造函數:構造函數可以被重載(Overloading),但不能被繼承。

          (4)什麼是字段?注意字段和局部變量的訪問。

          字段是指在類或結構中聲明的“類級別”的變量。換句話說,字段是整個類內部的所有方法和事件中都可以訪問的變量。

          局部變量是相對於字段來說的。可以將局部變量理解爲“塊”級別的變量。

          2.結構

          結構是值類型,結構和類的區別

          結構和類的主要區別是結構中的數據保存在堆棧(Stack)中而不是堆(Heap)中。另外,所有結構也都和類一樣默認隱式地從Object類繼承,但結構不能繼承自其他結構。

          3.屬性、方法、事件

          (1)什麼是屬性?屬性和字段的區別

          屬性(property)是字段的擴展,用於提供對字段讀寫的手段。

          區別:屬性不表示存儲位置,而通過get訪問器和set訪問器指定讀寫字段的值時需要執行的語句。

          (2)屬性的定義(get、set)

          典型錯誤:未定義私有字段,但set中又包含賦值(屬性名=value)

          常規屬性聲明:

           private string sno;
           public string SNO
           {
          	get {return sno;}   
          	set{sno=value;}
           }
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6

          自動實現的屬性:

           public string SNO {get; private set;}    //只讀不能寫
           public string Name {get; set;}      //讀寫
          • 1

          (3)方法的定義與參數傳遞(傳值、傳引用和傳輸出類型的參數),要求會讀程序寫結果。例3-3、3-4、3-5

          值參數:用於傳遞輸入參數

          public int Add(int x, int y=10)
          {
          	return x + y;
          }
          • 1
          • 2
          • 3

          引用參數:用於傳遞輸入和輸出參數,用ref修飾符聲明

          public static void AddOne ( ref int a)
          {
          	a++;
          }
          • 1
          • 2
          • 3

          輸出參數:用於傳遞返回的參數,用out關鍵字聲明

          public static void Div(int x, int y, out int result, out int
          remainder)
          {
          	result=x/y;
          	remainder=x%y;
          }
          • 1
          • 2
          • 3
          • 4
          • 5

          (4)WPF定時器DispatcherTimer的基本用法。

          public partial class MainWindow : Window
          {
            	System.Window.Threading.DispatcherTimer timer =  new System.Window.Threading.DispatcherTimer();
           public MainWindow()
           {
          	InitializeComponent();
          	timer.Tick+=timer_Tick;
          	timer.Interval=TimerSpan.FromMilliseconds(1000);
          	timer.Start();
           }
          void timer_Tick(object sender, EventArgs e)
          {
                 {
                          //事件
                  	label.Content=DateTime.Now.ToString(“HH:mm:ss”)
                 }
          }
          
          • 1
          • 2
          • 3
          • 4
          • 5
          • 6
          • 7
          • 8
          • 9
          • 10
          • 11
          • 12
          • 13
          • 14
          • 15
          • 16
          • 17
          • 18

          (5)隨機數的基本用法。

          Random r = new Random();       //初始化
          Next( );   隨機整數
          Next(min,max);      //min~max-1
          Next(max);     //0~max-1
          NextDouble( );      //隨機小數,0~1
          • 1
          • 2
          • 3
          • 4

          4.類的繼承與多態性

          (1)面向對象編程的三個基本原則:封裝、繼承、多態。

          Ø 封裝:對象封裝了對象的數據以及對這些數據的操作。對象是屬性和操作的組合。對象的表現(服務、接口)和實現細節分開。

          Ø 繼承:繼承表示現實世界中遺傳關係的直接模擬。表示類之間的內在聯繫以及對屬性和操作的共享。作用:簡化類的設計工作量,避免設計的不一致性。

          Ø 多態:同一操作可分別作用於不同的類的實例,此時不同的類將進行不同的解釋,最後產生不同的執行結果。

          (2)基類和擴充類的相關內容,繼承中構造函數的處理、base關鍵字。

          基類和擴充類的相關內容:在C#中,用冒號(“:”)表示繼承。被繼承的類叫基類或者父類;從基類繼承的類叫擴充類,又叫派生類或者子類。注意:擴充類不能繼承基類中所定義的private成員,只能繼承基類的public成員或protected成員。

          [訪問修飾符] class 擴充類名稱:基類名稱
          {
          	//程序代碼
           }
          
          • 1
          • 2
          • 3
          • 4

          繼承中構造函數的處理:構造函數在擴充類中不會被繼承下來。

          C#在內部按照下列順序處理構造函數:從擴充類依次向上尋找其基類,直到找到最初的基類,然後開始執行最初的基類的構造函數,再依次向下執行擴充類的構造函數,直至執行完最終的擴充類的構造函數爲止。

          base關鍵字:

          (3)多態性中虛擬方法、重寫、隱藏等相關概念。

          修飾符:new、virtual、orverride

          Ø 虛擬:用修飾符virtual表示某個屬性或者方法可以被擴充類中同名的屬性或方法重寫

          Ø 重寫:使用修飾符override重寫基類的(加virtual關鍵字的)屬性和方法

          Ø 隱藏:編寫方法時,如果希望隱藏基類的方法,在擴充類中需要用new聲明。與方法重寫不同的是,使用new關鍵字時並不要求基類中的方法聲明爲virtual,只要在擴充類的方法前聲明爲new,就可以隱藏基類的方法。

          (5)
          抽象類和接口的區別。注意接口的成員完全抽象。

          接口與抽象類不同的是:接口是完全抽象的成員集合。另外,類可以繼承多個接口,但不能繼承多個抽象類。

          抽象類主要用於關係密切的對象,而接口最合適爲不相關的類提供通用的功能。設計優良的接口往往很小而且相互獨立,這樣可以減少產生性能問題的可能性。

          第5-6章

          1.泛型與LINQ

          (1)泛型列表List用法,例題5-2.

          List<string> list1=new
          List<string>();
          List<int> list2=new
          List<string>(10,20,30);
          
          • 1
          • 2
          • 3
          • 4

          List泛型列表提供的方法:

          ADD:添加,Insert:插入,Contains:測試是否存在,Remove:移除指定鍵元素,

          Clear:移除所有元素;

          數字列表:

          List<int> list=new
          List<int>( );
          list.sum();list.Average();list.Max();list.Min();
          • 1
          • 2

          (2)LINQ查詢表達式,要求會寫基本的LINQ表達式。

          from子句:

          var q = from t in students
           	select t;
          • 1

          where子句:

          var q = from t in students
          	where t.name[0]==“ ”&&t.Gender==“ ’’
           	select t;
          • 1
          • 2

          orderby子句:排序,ascending升序,descending降序

           var q = from t in students
          	where t.Score>0
           	orderby t.Score descending,t.Name ascending
           	select t;
          
          • 1
          • 2
          • 3
          • 4

          group子句:按指定的鍵分組,用by指定分組的鍵

           var q = from t in students
           	where t.Score>0
           	orderby t.Score descending,t.Name ascending
          	group t by t.Gender;
          • 1
          • 2
          • 3

          select子句:還可以用select子句讓範圍變量只包含成員的子集

          var q = from t in students
          	select t.Score;
          • 1

          查詢多個對象:唯一要求是每個對象中的成員需要至少有一個與其他成員關聯的元素

          var q = from t1 in students
            	from t2 in studentInfo
           	where t1.ID==t2.StudentID
          	select new {姓名=t1.Name,父親=t2.FatherName};
          • 1
          • 2
          • 3

          2.目錄和文件操作

          (1)目錄的創建、刪除、移動、判定目錄是否存在。

          Directory類:

          創建:

          	Directory.CreateDirectory(@”C:\test\t1\t2”);
              或	Directory.CreateDirectory(”C:\\test\\t1\\t2”);
          • 1

          刪除:recursive爲布爾值,如果要移除path中的目錄(包括所有子目錄和文件),則爲true,否則爲false。

          Directory.Delete(@“C:\test”,true;

            移動:Move方法能夠重命名或移動目錄

            `public static void Move (string sourceDirName,string destDirName);

              Exists:判斷目錄是否存在

              (2)判斷文件是否存在、複製文件、刪除文件、移動文件。

              判斷:

              if (File.Exists(@“E:\ls\MyTest1.txt")){}

                複製:

                File.Copy(path1, path2, true);
                overwrite表示是否可以覆蓋目標文件,如果可以覆蓋目標文件,則爲true,否則爲false
                • 1

                (3)要求會讀寫文本文件。P142-144

                ReadAllText:讀取每一行,並將每一行添加爲字符串的一個元素

                public static string ReadAllText(string path,Encoding encoding);

                  AppendAllText:將指定的字符串追加到文件中,文件不存在則創建該文件

                  public static void AppendAllText(string path ,string contents,Encoding encoding)

                    ReadAllLines:將文件的所有行讀入一個字符串數組。

                    WriteAllLines:創建一個新文件,在其中寫入指定的字符串數組,如果目標文件已存在,則覆蓋該文件。

                    StreamReader,StreamWriter

                    第7章

                    (1)XAML基本語法(P158)。注意:大小寫區分

                    利用元素、特徵和屬性來描述元素對象的各種要素。

                    <對象名 特性名1=“值1” 特性名2=“值2”……> </對象名>

                    XAML中的對象名稱、特性名稱以及屬性名稱都區分大小寫。

                    (2)WPF窗口的創建、顯示(show、showDialog)、隱藏和關閉(closing事件)。

                    顯示:

                    	MyWindow myWindow = new MyWindow( );
                    	myWindow.show();    
                        或	myWindow.showDialog()
                    • 1
                    • 2

                    隱藏:當前窗口隱藏:

                    this.Hide( )

                      隱藏其他窗口:

                      myWindow.Hide();

                        關閉:當前窗口關閉:

                        this.Close();

                          關閉其他窗口:

                           myWindow.Close();

                            (3)Frame控件的用法,Source屬性。

                            在Frame中承載Page:在Frame元素中將Source屬性設置爲要導航到的頁

                            	<Frame Name=”frame1” Source=”Page1.xaml”>
                                 或	frame1.Source=new Uri(“Page1.xaml” , UriKind.Relative);
                            • 1

                            (4)如何用C#代碼設定WPF控件的背景色?如何用C#代碼創建純色畫筆?

                            常用顏色格式:#aarrggbb
                            aa透明度,rr紅色通道,gg綠色通道,bb藍色通道。

                            public static Color FromArgb(byte a,byte r,byte g,byte b);

                              背景色:

                              button1.Background=Brushes.Blue;
                              或:button1.Background=new SolidColorBrush(Colors.Blue);
                              或:Color c=Color.FromArgb(255,255,255,0);
                              Button1.Background=new SolidColorBrush(c);
                              
                              • 1
                              • 2
                              • 3
                              • 4

                              純色畫筆:

                              	SolidColorBrush b = new SolidColorBrush();
                               	b.Color = Color.FromArgb(225, 225, 0, 0);
                                 	button1.Background = b;
                              • 1
                              • 2

                              (5)WPF應用程序中,事件註冊的方法、事件源判定(sender、e.Source)。

                              事件註冊:

                              Ø 在xaml中註冊事件:通過事件列表附加事件;在XAML中直接鍵入事件名稱。

                              Ø 在C#代碼中註冊事件:利用+=註冊事件,利用-=取消註冊

                              private void OkButton_Click(object sender, RoutedEventArgs e){ //事件處理代碼 }

                                參數sender包括附加該事件的對象,參數e是數據源的相關數據。

                                在WPF中,絕大部分情況下都是用e.Source來判斷事件源是誰。

                                (6)WPF的事件路由策略:直接、冒泡和隧道及其含義。

                                WPF應用程序中的所有事件全部都是用事件路由策略來實現的。

                                路由是指在嵌套的元素樹中,從某個元素開始,按照某種順序依次查找其他元素的過程。路由事件是指通過路由將事件轉發到其他元素的過程。

                                Ø 直接:直接(Direct)是指該事件只針對元素自身,而不會再去路由到其他元素。

                                Ø 冒泡:冒泡(Bubble)是指從事件源依次向父元素方向查找,直到查找到根元素爲止。目的是搜索父元素中是否包含針對該元素的附件事件聲明。

                                Ø 隧道:隧道(Tunnel)是指從根元素開始向子元素依次路由,直到查找到事件源爲止。

                                第8章

                                1.基本概念

                                (1)WPF控件模型:內容、內邊距、邊框和外邊距。P198

                                內容:指顯示控件內容的區域,可以是文本、圖像或其他控件元素。

                                Padding:內邊距。即邊框和內容之間的矩形環區域。

                                邊框:即內邊距和外邊距之間的黑色矩形環區域。

                                Margin:外邊距。指邊框和圖中虛線包圍的矩形環區域,表示該控件和其他控件之間的距離。

                                外邊距(Margin):

                                Ø 一種是用一個值來描述,例如下面的代碼表示按鈕周邊四個方向的外邊距都是10。

                                XAML:<Button Name="Button1" Margin="10">按鈕1</Button>
                                C#:Button1.Margin = new Thickness(10);
                                • 1

                                Ø 另一種是按照“左、上、右、下”的順序用4個值分別描述。例如下面的代碼表示Button2按鈕的左、上、右、下的外邊距分別是0、10、0、10

                                XAML:<Button Name="Button2" Margin="0,10,0,10">按鈕2</Button>
                                C#:Button2.Margin = new Thickness(0, 10, 0, 10);
                                • 1

                                (2)WPF內容模型P204

                                Ø Text內容模型(Text屬性,控件:TextBox、TextBlcok、PasswordBox):表示一段字符串。

                                Ø Content內容模型(Content屬性,控件:Label、Button、Image、RadioButton、CheckBox):表示該內容是一個對象,該對象可以是文本、圖像及其他元素。

                                Ø Children內容模型(佈局控件,例如Grid、StackPanel\Canvas\DockPanel):表示一個或多個子元素。

                                2.佈局控件

                                (1)Grid佈局控件的含義及其基本用法

                                *、3*、Auto、Grid.Row/Grid.RowSpan
                                Grid.Column/Grid.ColumnSpan

                                Ø 網格(Grid)是所有動態佈局控件中唯一可按比例動態調整分配空間的控件。

                                Ø 用Grid.Row、Grid.Column指定子元素所在的行和列。

                                Ø Grid.RowSpan跨多行。例如Grid.RowSpan="2"表示跨2行。

                                Ø Grid.ColumnSpan跨多列。例如Grid.ColumnSpan
                                ="2"表示跨2列。

                                Ø 自動調整行高和列寬(Auto、*)。

                                Ø Auto:自動調整行高或列寬。

                                Ø n*:根據加權比例分配網格的行和列之間的可用空間。

                                Ø 當n爲1時,可直接用一個星號(*)表示。

                                (2)StackPanel佈局控件的基本用法:將子元素按縱向或橫向順序排列或堆疊。沒有重疊的時候稱爲排列,有重疊的時候稱爲堆疊。

                                常用Orientation屬性:排列或堆疊的方向。默認爲縱向,如果希望橫向排列或堆疊,將該屬性設置爲“Horizontal”即可。

                                (3)Canvas是WPF中惟一的一個絕對定位佈局控件(用座標來定位,注意其Canvas.Left和Canvas.Top的含義),其餘佈局控件均爲動態定位佈局控件。

                                Ø Canvas用於定義一個區域,稱爲畫布。在該畫布內的所有子元素都用相對於該區域左上角的座標位置x和y來定位 。

                                Ø Canvas.Left和Canvas.Top:子元素指定其相對於Canvas左上角的位置。

                                (4)DockPanel用於定義一個區域,並使該區域內的子元素在其上、下、左、右各邊緣按水平或垂直方式依次停靠。

                                3.常用基本控件

                                (1)標籤控件Label、文本塊控件TextBlock及其常用屬性的基本用法。

                                Ø Label :Label的內容模型是Content,因此可以包含其他對象。一般將Label與TextBox一起使用,用於顯示描述性信息、驗證信息或輸入指示信息。

                                Ø TextBlock :主要用於顯示可格式化表示的只讀文本信息,可分別指定字體系列、樣式、粗細或大小,最常用的是Text屬性。

                                (2)按鈕(Button)及其常用屬性的基本用法。

                                Ø Button:除了可顯示一般的文字之外,還可以顯示圖像,或者同時顯示圖像和文字。

                                (3)文本框控件:TextBox和PasswordBox,例8-10。

                                Ø TextBox:TextBox控件用於顯示或編輯純文本字符。

                                Text:顯示的文本;    
                                MaxLength:限制用戶輸入的字符數;
                                AcceptsReturn: False(默認)、True(按回車鍵換行);
                                TextWrapping:控制是否自動轉到下一行,當其值爲“Wrap”時,該控件可自動擴展以容納多行文本;
                                BorderBrush:邊框顏色;
                                BorderThickness:邊框寬度。
                                TextBox控件的常用事件是TextChanged事件。
                                • 1
                                • 2
                                • 3
                                • 4
                                • 5
                                • 6

                                Ø PasswordBox:用於密碼輸入

                                PasswordChar屬性:獲取或設置掩碼,即不論輸入什麼字符,顯示的都是用它指定的字符;
                                Password屬性:輸入的密碼字符串。
                                PasswordChanged事件:當密碼字符串改變時發生
                                
                                • 1
                                • 2
                                • 3
                                • 4

                                (4)列表框控件ListBox和ComboBox控件,例8-13

                                Ø ListBox用於顯示一組選項,內容模型是Items,每個選項既可以是字符串,也可以是圖像。

                                Ø ComboBox是TextBox和可彈出的ListBox的組合,它除了比ListBox多了一個TextBox以外,對於每個選項的操作與ListBox的用法相同。

                                Ø 這兩個控件的常用屬性、方法和事件如下:

                                Count屬性:獲取列表項的個數。
                                SelectedIndex屬性:獲取當前選定項從0開始的索引號,未選擇任何項時該值爲−1。
                                SelectedItem屬性:獲取當前選定的項,未選擇任何項時該值爲null。
                                SelectionMode屬性:選擇列表項的方式,有以下取值。
                                Items.Add方法:向ListBox的項列表添加項。
                                Items.Clear方法:從集合中移除所有項。
                                Items.Contains方法:確定指定的項是否位於集合內。
                                Items.Remove方法:從集合中移除指定的對象。
                                SelectionChanged事件:當選擇項發生改變時引發此事件。
                                • 1
                                • 2
                                • 3
                                • 4
                                • 5
                                • 6
                                • 7
                                • 8

                                第9章

                                (1)XAML資源的聲明:在XAML中,用元素的Resources屬性來聲明XAML資源,在XAML資源中用Style元素聲明樣式和模板。
                                4種Style定義形式,TargetType和X:key特性(P240)

                                Ø x:Key :樣式設置的鍵值
                                TargetType:指定控件類型

                                Ø Style元素的定義類型:

                                隱式樣式設置(只聲明TargetType)

                                顯示樣式設置(只聲明x:Key)

                                同時聲明x:Key和TargetType

                                樣式繼承(聲明中包含BasedOn)

                                (2)內聯式、框架元素樣式、應用程序樣式、資源字典的含義。

                                Ø 內聯式:內聯式是指在元素的開始標記內直接用特性語法聲明元素的樣式。

                                Ø 框架元素樣式:框架元素樣式是指在框架元素(包括根元素)的Resources屬性中定義的樣式,這種樣式的作用範圍爲該元素的所有子元素。
                                框架元素是指從FrameworkElement或FrameworkContentElement繼承的元素,根元素(Window、Page、UserControl等)只是一種特殊的框架元素。

                                Ø 應用程序樣式:應用程序樣式是指在App.xaml文件的Application.Resources屬性中聲明的樣式。這種樣式的作用範圍爲整個應用程序項目,對項目中的所有窗口或頁面都起作用。

                                Ø 資源字典:資源字典是指在單獨的XAML文件中用ResourceDictionary定義的樣式。在元素樣式、應用程序樣式中都可以包含ResourceDictionary。

                                (3)會使用元素的Resource屬性引用各種資源。
                                靜態資源(StaticResource),動態資源(DynamicResource)。

                                Ø 靜態資源(StaticResource)是指用{StaticResource keyName}標記擴展引用的資源:執行速度快,但無法動態改變

                                Ø 動態資源(DynamicResource)是指用{DynamicResource keyName}標記擴展引用的資源:可以動態改變,但執行速度慢

                                第12章

                                1.數據庫優先模式:先創建數據庫,然後再根據數據庫生成對應的實體數據模型。

                                2.用實體框架(EF)和LINQ對數據表進行添加、刪除、修改和查詢操作。例題【12-4、5、6、7、8】

                                 var q = from t in context.Student
                                 	select t;
                                • 1

                                Ø 增:

                                context.Student.Add(student);

                                  Ø 刪:

                                  foreach(var v in q)
                                  {
                                        context.Student.Remove(v)}
                                  • 1
                                  • 2
                                  • 3

                                  Ø 改:

                                  foreach(var v in q)
                                  {
                                         v.chengJi+=10;
                                  }
                                  context.SaveChanges();
                                  • 1
                                  • 2
                                  • 3
                                  • 4

                                  Ø 查:

                                  dataGrid.ItemSource=q.ToList();
                                    發表評論
                                    所有評論
                                    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
                                    相關文章