2019C#程序设计及应用教程总复习

2019C#程序设计及应用教程总复习

目录

  • 2019C#程序设计及应用教程总复习
    • 第1章
    • 第2章
    • 第3-4章
    • 第5-6章
    • 第7章
    • 第8章
    • 第9章
    • 第12章

第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);

(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)

2019C#程序设计及应用教程总复习_第1张图片
区别:值类型变量直接在堆栈中保存变量的值,引用类型的变量在堆栈中保存的是对象的引用地址。
2019C#程序设计及应用教程总复习_第2张图片

(2)各种基本数据类型的定义和使用。

注意布尔类型(bool)、字符类型(char)和枚举(enum)的定义
1)bool类型只有两个值:true和false。条件表达式的运算结果必须是bool型的。

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

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:

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,产生编译错误。
MyColor myColor=MyColor.Red;
Console.WriteLine(myColor);//输出Red
Console.WriteLine((int)myColor);//输出0

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);

(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);

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

(1)求字符串长度。(不用区分中英文,有多少个字长度就是多少)

var s = "abEF123张三456";     
var n = s.Length;    //n=12

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

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

(3)求子字符串(Substring):得到一个字符串中从某个位置开始的子字符串

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

(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   

4.数组

(1)一维数组的基本定义方法、赋初值、访问每个元素。

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

(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

5.数据类型转换

(1)隐式转换和显式转换的概念及使用场合(P52)

Ø 隐式转换:就是系统默认的、不需要加以声明就可以进行的转换。

场合:如果是从低精度、小范围的数据转换为高精度、大范围的数据类型,可以使用隐式转换。

Ø 显式转换:又称强制转换,需要用户明确地指定转换的类型。

场合:所有的隐式转换也都可以采用显式转换的形式来表示;将大范围类型的数据转换为小范围类型的数据时,必须使用显式转换。

(2)装箱和拆箱的概念

装箱:将值类型隐式地转换为Object类型

拆箱:显示地把Object类型转换为值类型

6.流程控制语句

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

(1)顺序

(2)分支:

if(...){...}
if(...){...}else{...}
if(...){...}else
if(...){...}else if(...){...}else{...}
switch(s){case:.. case :.. case :..default...}

(3)循环:

for(...){...}

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

while(...){...}     //条件为true的情况下,重复执行循环体内的语句序列,直到条件为false为止。

do{...}while(...) //do语句循环体内的程序至少会执行一次,每次执行后再判断条件是否为true,如果为true,则继续下一次循环。

(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;}
 }

自动实现的属性:

 public string SNO {get; private set;}    //只读不能写
 public string Name {get; set;}      //读写

(3)方法的定义与参数传递(传值、传引用和传输出类型的参数),要求会读程序写结果。例3-3、3-4、3-5

值参数:用于传递输入参数

public int Add(int x, int y=10)
{
	return x + y;
}

引用参数:用于传递输入和输出参数,用ref修饰符声明

public static void AddOne ( ref int a)
{
	a++;
}

输出参数:用于传递返回的参数,用out关键字声明

public static void Div(int x, int y, out int result, out int
remainder)
{
	result=x/y;
	remainder=x%y;
}

(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”)
       }
}

(5)随机数的基本用法。

Random r = new Random();       //初始化
Next( );   随机整数
Next(min,max);      //min~max-1
Next(max);     //0~max-1
NextDouble( );      //随机小数,0~1

4.类的继承与多态性

(1)面向对象编程的三个基本原则:封装、继承、多态。

Ø 封装:对象封装了对象的数据以及对这些数据的操作。对象是属性和操作的组合。对象的表现(服务、接口)和实现细节分开。

Ø 继承:继承表示现实世界中遗传关系的直接模拟。表示类之间的内在联系以及对属性和操作的共享。作用:简化类的设计工作量,避免设计的不一致性。

Ø 多态:同一操作可分别作用于不同的类的实例,此时不同的类将进行不同的解释,最后产生不同的执行结果。

(2)基类和扩充类的相关内容,继承中构造函数的处理、base关键字。

基类和扩充类的相关内容:在C#中,用冒号(“:”)表示继承。被继承的类叫基类或者父类;从基类继承的类叫扩充类,又叫派生类或者子类。注意:扩充类不能继承基类中所定义的private成员,只能继承基类的public成员或protected成员。

[访问修饰符] class 扩充类名称:基类名称
{
	//程序代码
 }

继承中构造函数的处理:构造函数在扩充类中不会被继承下来。

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);

List泛型列表提供的方法:

ADD:添加,Insert:插入,Contains:测试是否存在,Remove:移除指定键元素,

Clear:移除所有元素;

数字列表:

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

(2)LINQ查询表达式,要求会写基本的LINQ表达式。

from子句:

var q = from t in students
 	select t;

where子句:

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

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

 var q = from t in students
	where t.Score>0
 	orderby t.Score descending,t.Name ascending
 	select t;

group子句:按指定的键分组,用by指定分组的键

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

select子句:还可以用select子句让范围变量只包含成员的子集

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

查询多个对象:唯一要求是每个对象中的成员需要至少有一个与其他成员关联的元素

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

2.目录和文件操作

(1)目录的创建、删除、移动、判定目录是否存在。

Directory类:

创建:

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

删除: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

(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()

隐藏:当前窗口隐藏:

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);

(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);

纯色画笔:

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

(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);

Ø 另一种是按照“左、上、右、下”的顺序用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);

(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事件。

Ø PasswordBox:用于密码输入

PasswordChar属性:获取或设置掩码,即不论输入什么字符,显示的都是用它指定的字符;
Password属性:输入的密码字符串。
PasswordChanged事件:当密码字符串改变时发生

(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事件:当选择项发生改变时引发此事件。

第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;

Ø 增:

context.Student.Add(student);

Ø 删:

foreach(var v in q)
{
      context.Student.Remove(v)}

Ø 改:

foreach(var v in q)
{
       v.chengJi+=10;
}
context.SaveChanges();

Ø 查:

dataGrid.ItemSource=q.ToList();

你可能感兴趣的:(复习,c#)