C#基础语法个人学习笔记_第1页
C#基础语法个人学习笔记_第2页
C#基础语法个人学习笔记_第3页
C#基础语法个人学习笔记_第4页
C#基础语法个人学习笔记_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c#基础1.unint age=18u;18u表示该数值类型为uint型;2.float a=1.234;错误 c#中默认的小数为double型;double型向float型不能隐式转换,可以加强制转换,float a=1.234f;如果是decimal,则改为decimal a=1.234m;1. bool a=0;bool a=1;错误;bool a=true;或者bool a=false;2. c#中枚举类型的注意事项:1,每种枚举类型具有一种基础类型,此基础类型可以是除了char类型以外的任何整型。如果不指明基础数据类型,默认为int类型;2,默认情况下,第一个枚举成员的值为0,后面的

2、每个枚举成员的之依次递增1;3,不同的枚举成员的只可以赋相同的值4,对枚举成员的的数据可以进行运算,但要注意运算后的枚举类型数据应在枚举成员范围之内;3. 字符的使用:例如,string a=”yuan”bin”;输出a的结果为yuan”bin此时转义字符变为普通字符;字符的作用就是将字符串中的特殊字符变为普通字符。4. 可已经任何类型的数据赋给object类型的变量;5. 数值的隐式转换通常只能由低精度、小范围的数据向高精度、大范围的数据转换;如果高精度、大范围的数在低精度小范围的范围内,也可以转换。6. 常量在定义时必须赋值,赋值和定义不能分开;7. 位运算符的使用8. console.w

3、riteline(convert.tostring(a,2)将变量a转换为二进制并输出;9. c#中%运算符两端可以不为整数10. 按位&运算符,按位|运算符,按位运算符,以及,的用法11. 移位运算符的操作数为int和 long,第一位为符号位。的操作数为uint 和ulong,没有符号位,各操作数依次位移,高位设为0;12. 类型测试运算符is 和as的使用;13. 用gettype方法可以得到变量的类型;14. 运算符的优先级;15. 正则表达式的使用方法;16. foreach语句的使用,格式;17. break,continue语句只能出现在switch,while,do,for,f

4、oreach语句中18. goto语句的使用及注意事项;19. 函数的参数传递:1、值传递2、引用传递3、输出传递(返回值有多个)4、参数数组(参数个数不确定)。注意:一个函数中只能有一个参数数组,并且params不能与ref和out一块使用;20. 函数重载的注意事项;21. 用random生成随机数;22. 输出函数的输出格式23. 日期函数以及常用的数学函数24. 一维数组的创建格式;int array=new int300;或者int array=new int 1,2,3;25. 一位数组的length属性(数组的长度)26. 二维数组的创建与初始化int ,=new int2,31

5、,2,3,2,2,4;27. 交错数组的定义形式,int array=new int行数;或者int b=new int3;b0=new int 2(首行有两个元素);28. 交错数组的初始化:int array=new intnew int1,2,new int2,3,4,new int1,2,3,4,5;或者int array=new int1,2,3,new int2,2,5,2;29. 一位数组的遍历,可以用getupperbound的方法获取某一维数组的最高下标,形如for(int i=0;ia.getupperbound(0)+1;i+)(a是数组,0是维数);还可以用getlen

6、gth的方法获得某维数组的长度,形如:a.getlength(维数);30. 二维数组机交错数组的遍历。31. 用foreach遍历数组,交错数组不适合32. arraylist类的常用属性count,item,capacity,及常用方法add,remove,removeat,clear,insert,indexof,reverse,sort,toarray,contains;33. arraylist类中可以放任意类型的元素;对于集合,它也是通过下标来访问的,小标也是从零开始的;注意:使用时要加命名空间using system.collections34. 注意add方法和addrange

7、方法的区别;insert和insertrange原理相似;35. remove方法的使用以及remove方法的使用以及二者的区别,与indexof配合使用;36. 哈希表的属性及常用的方法;37. 哈希表的遍历的方法;38. 类和对象的概念;39. 类的定义方法40. 类的默认修饰符是internal;子类的可访问性不能高于父类41. 创建对象的方式;42. const 与readonly的区别:const可以用于修饰类的字段或者局部字段变量,而readonly只能修饰类的字段;const常量必须在声明的同时进行赋值,指定值后不能改变;而readonly只读字段则可以在声明时被初始化,或者通过

8、构造函数初始化,被初始化后还可以通过构造函数再次赋值;常量是静态的,而只读字段可以是静态的也可以是动态的;43. 静态方法只能调用静态成员,实例方法可以调用实例成员,也可以调用静态成员;44. c#中方法在类中声明和定义,两者不能分开;45. 属性的设置;46. 用户一旦自己编写构造函数,编译器就不再提供默认的构造函数;47. 构造函数的重载;48. 析构函数的形式。析构函数不能被继承和重载;49. 静态类的注意事项:1,、静态类是不能实例化的类,因此不能用new关键字创建;2、静态类不能被继承;3、静态类不能显示的制定其他任何基类;4、静态类不能有实力构造函数,但可以包含静态构造函数;5、静

9、态类不能有任何势力成员,但可以有常量成员;6、静态类不能实现任何接口;7、静态类不能有protected或者protected internal访问修饰符8、静态类成员默认并不是static类型的,必须用static显示的声明;50. 继承的概念;51. c#中继承的格式;52. c#中继承的注意事项:1、c#中只有一种继承方式,就是公有继承,没有私有继承和保护继承;2、子类可以访问父类的公有和保护成员;3、继承可以传递;4、object类是所有类的基类,任何类都继承自object类;5、派生类可以继承积累的所有成员,除了积累的构造函数和析构函数;6、子类只是父类的扩展而不能除掉已经继承的成员

10、定义,但是可以改写;53. c#中派生类调用基类的方法时可以用base关键字,形如base.基类的方法();54. 派生类的构造函数的继承,可以使用base关键字。构造函数的调用顺序为先调用基类的构造函数,在调用派生类的构造函数体;55. 如果基类中没有定义无参的构造函数数publica()x=0;,则在派生类的人和构造函数成员初始化列表中必须显式的指出基类a的无参构造函数a(i);56. 抽象类用abstract声明,只能作为其他类的基类,而不能被实例化,对抽象类使用new关键字将会发生错误;57. 抽象函数只提供函数名称,集体实现交由派生类,但是抽象函数绝对不能用virtual关键字,否则

11、会出错。(abstract和virtual不能同时使用);58. 抽象类既可以包含抽象函数,也可以包含非抽象函数,而非抽象类只能包含非抽象函数,只要有抽象函数,则该类一定是抽象类;59. 当抽象类派生出非抽象类时,抽象函数必须使用override进行重写;60. 抽象类可以被抽象类继承,结果仍是抽象类;抽象类被实现后,不能改原方法的修饰符;61. 密封类用sealed修饰,不能被继承;密封方法也用sealed修饰,该方法不能被重写;62. new关键字可以在派生类重写基类的函数,基类的函数被隐藏,还可以重写积累的数据成员;可以将基类的成员用virtual修饰,可以在派生类中用override而

12、非new进行重写;63. 虚方法的注意事项:1、属性,字段,索引器都可以虚拟,但字段不能虚拟;2、虚成员的访问属性不能定义为私有;3、使用了virtual修饰符后,不能再有static、abstract、override修饰符;4、使用了override修饰符后,不允许有new,static,virtual修饰符;5、重写虚方法后,方法名、返回值类型、参数列表与原方法完全一致;6、只有虚方法和抽象方法可以被重写;64. 虚方法的集体执行过程:1、当调用一个对象的方法时,系统会直接检查这个对象声明定义的类,确定所用方法是否为虚方法;2、如果不是虚方法,那么他就直接执行该方法。而如果有virtua

13、l关键字声明,也就是说该方法是虚方法,那么就不会立刻执行该函数了,而转去检查对象的实例类。如果对象类和实现类是同一类,则就直接执行该方法;如果对象类和实现类不一致,则接着向下执行;3、系统会检查实例类中是否有重写的该方法,如果有,就立刻执行该方法;如果没有,则系统仍然执行声明类中的该方法;注:a a=new b();a是声明类,b是实例类;65. 运算符重载的形式public static 返回值类型 operator运算符;注意,运算符重载必须是public和static;66. 运算符重载实质上是写一个函数,注意函数应该写到一个类中;67. 在进行运算符重载之前,应先查阅该运算符能否被重载

14、;68. 接口的声明,修饰符 interface 接口名69. c#中接口内所有的方法默认都是公用的,不能加任何修饰符,并且,显式的为接口的方法指定public修饰符是非法的;70. 注意:1、接口可以包括方法、属性、索引指示器、或事件,但不能包含常量、域、操作符、构造和析构函数以及静态成员;2、接口的成员是从基接口继承的成员和由本身定义的成员;3、接口中不能有任何程序代码,也不能有;4、接口不能直接实例化;但是可以用接口声明,用实现类来实例化;71. 对于既有基类又有接口的继承,要把基类放在接口的前面;72. 委托的声明:访问修饰符 delegate 返回值类型 委托名 (形参列表);注:委

15、托类似与方法的定义,但是没有方法体;委托声明中的返回值类型、形参类型、形参个数要与被引用的方法匹配(不用完全匹配);可以在定义类的任何位置定义委托;73. 声明委托:委托类名 委托名=new 委托类名(被引用的方法名),或者:委托类名 委托名=被引用的方法;74. 委托引用的方法必须是某一个类中的方法;75. 使用委托可以把方法作为一个参数传递给另一个方法,从而实现方法的传递;76. 如果委托引用非静态方法,必须先将类实例化为具体的对象后才可以引用对象的方法;77. 对于一个实例方法的引用,实例化委托时,一定要带上实例对象的名称;78. 实现委托不用了解实例类型,任意类型的对象中只要具有与委托

16、签名相同且匹配的方法,委托即可引用该对象的此方法;79. 委托的匿名方法:委托类型 委托名=delegate (形参列表)代码块;(此处的;不能省略)80. 编译器生成的匿名方法在类中是private可见的,在类外无法访问;并且,代码块中不能有跳转语句break goto continue从代码块内跳出,也不能从代码块外部跳入内部;81. 不能访问匿名方法外部的ref参数和out参数,但是可以使用匿名方法访问外部定义的其他变量。82. is运算符左侧不允许使用匿名方法;83. 创建多播委托的方法;可以通过+、+=、-=等运算符来增加或减少委拖链;通过创建委拖链,可以实现多个方法的调用84. 注

17、意:1、多播委托的签名需要统一返回void类型,否则只能得到委托调用的最后一个方法的结果;2、如果委拖链中的某个方法抛出异常,后面的其他方法便不会被继续执行;85. 委托的返回类型的协变:假设一个类a1,a2是a1的一个派生类,定义一个委托,其返回值是a1(父类),定义一个方法,返回值是a2(子类).此时该委托的实力可以引用该方法,返回值为委托的返回值类型;反之,会报错;86. 委托的参数类型抗变:假设一个类a1,a2是a1的一个派生类,定义一个委托,其参数为a2类型,定义一个方法,其参数为a1类型,此时该委托的实例可以引用该方法,使用的参数为委托的参数;反之会报错87. 委托的核心价值是可以

18、把方法作为参数进行传递,并进行回调,主要包含以下四个方面的应用:1、在未来知晓对象的成员的情况下,可以通过预定委托型参数实现对方法的回调和传递,便于拓展对对象的操作能力;2、勇于事件的实现;88. 事件是委托的一种特殊方式,事件通常包括引发事件的发送方以及捕获事件并作出反应的接收方;89. 事件的定义:修饰符 event 委托类型 事件名;90. 事件的设计步骤:1、定义一个类型,用于存放需要发送给事件通知接受者的附加信息2、定义事件成员3、定义一个负责引发事件的方法来通知已订阅事件的对象事件发生了4、定义一个方法,将输入转发为期望事件;91. 泛型的优点:1、性能2、类型更安全3、二进制代码

19、的重用代码的扩展92. 泛型的定义:格式,访问修饰符 class类名93. 泛型的实例化:类名实例名=new 类名 (构造函数实参);94. 常用的泛型1、list,其方法add,insert(元素插入位置,插入元素), contains,remove,clear;例子:arraylist类2、dictionary,其方法add,trygetvalue(要获取的键,out 可以返回的变量)(获取与指定键相关的值)、containskey(确定是否包含带有指定键的元素)、remove(移除带有指定键的元素)、例子:hashtable。dictionary的遍历方法;3、queue:表示对象先进先

20、出的集合。方法:enqueue(将指定元素插入队尾)。dequeue(移除队列首元素)4、stack:表示统一任意类型的,实力大小后可变的后进先出集合。方法push(将指定元素插入栈顶)、pop(将栈顶元素弹出)5、sortedlist:表示键/值对的集合,这些键值对基于关联的icomparer实现按照键进行排序,其方法于dictionary相同;95、泛型方法的定义方式与普通方法的定义方式相似,只需在末尾加96在给泛型初始化时,可以用default(t)的方式给一个泛型数据赋予默认值0,或者null。97.类型参数约束:形式:public class yuwhere t:参数类型 98.泛型

21、类可以派生出泛型类,也可以派生出非泛型类;99.泛型中使用静态字段的注意事项100、文件的创建方法:使用creat方法,格式:public static filestream creat(string path);文件的路径及文件名由参数path指定,返回值是一个filestream类的对象,如果文件不存在,则创建该文件,如果存在,并且不是只读的,则覆盖源文件。同理还可以使用appendtext(返回值是streamwriter对象)、creattext(返回值是streamwriter对象)方法创建文件101、文件的打开open方法:形式:public static filestream o

22、pen(string path,filemode mode)或者:public static filestream open(string path,filemode mode,fileaccess access)文件路径有参数path指定,文件的读写权限有参数mode指定,返回值是一个文件流;mode参数(append向文件为追加数据,creat创建新文件,creatnew创建新文件,如果同名文件存在,则引发异常,open打开文件,openorcreat打开文件,如果文件不存在,则创建新文件,truncate打开现有文件。文件一旦被打开,就将被截断为零字节大小)access参数(fileac

23、cess.read打开文件,只能读取。fileaccess.write打开文件,只能向文件中写fileaccess.readwrite打开文件,可读可写)还可以用openread(打开读)、opentext(打开文本文件)、openwrite(打开文件并写入)这些方法均只有一个参数path,用于指定要打开的文件名;102、delete方法,用于删除文件,文件不存在时,将发生异常。其参数为文件路径path103、copy方法:用于文件复制,形式file.copy(源文件路径,新文件路径)如果原文件存在,复制失败。或者file.copy(源文件路径,新文件路径,bool overwrite)ove

24、rwrite指定是否允许覆盖同名文件;103、move方法,用于移动文件到新位置,格式:file.move(源文件位置,新文件位置);104、replace方法:使用其他文件的内容替换指定文件的内容,格式(要被替换的文件名,替换的文件,备份的文件名)105、setattributes方法:用于对文件的属性fileattributes进行设置,格式:file. setattributes(文件路径,所需的fileattributes枚举值),枚举值用于获取或设置目录或文件的属性。106、getattribute方法:用于获取指定路径上文件的属性fileattributes,形式:file. ge

25、tattribute(文件路径)107、directory类中的所有方法都是静态的,不需要实例化即可应用108、directory中的方法:1、creatdirectory方法:用于创建,如果目录不存在,系统会按照path路径创建所有的目录和子目录。形式:directory. creatdirectory(目录路径),还可以directory. creatdirectory(目录路径子目录文件)108、delete方法,用于删除目录,形式:directory.delete(目录路径),此目录必须为空且可写。若要删除子目录及文件,可以用directory.delete(第一级目录,true)的方

26、式109、move方法,用于将文件或目录及其内容移动到新目录,形式:directory.move(要移动的目录,目录移动到的位置路径(如果不存在,则会新建,在移动)110、getfiles方法:用于返回指定目录下文件的名称,并以字符串的形式返回。形式directory. getfiles(目录路径),或者directory. getfiles(目录路径,路径中的文件名匹配的搜索字符串)111,、exists方法:检查文件夹是否存在,如果存在,返回true,否则,返回false112、getdirectories方法,用于获取指定目录中的所有子目录的名称,形式directory.getdirec

27、tories(目录路径)113、filestream类的常用属性:1、canread用于获取一个值,该值指示当前文件流是否支持读取2、canseek用于获取一个值,该值指示当前文件流是否支持定位操作3、canwrite用于获取一个值,该值指示当前文件流是否支持写入4、length用于获取用字节表示的文件流长度5、position用于获取或设置此文件流的当前位置114、filestream类的常用方法:1、构造函数,用于创建一个文件流,形式filestream 文件名=new filestream(文件路径,mode参数值);或者filestream 文件流名=new filestream(文件

28、路径,mode参数值,access参数值) 2、read方法,用于由文件流中读取数据并保存到字节数组array中,形式文件流的名字.read(字节数组,读取文件流位置,读取的字节流) 3、readbyte方法用于由文件流中读取一个字节的数据,并将读取位置提升一个字节,其返回值为读取的字节转换为int值,如果从末尾读取的话,返回值为-1; 4、write方法:把字节数组中的数据写入到文件中。形式:文件流的名字.write(字节数组,写入到文件中的位置,写入的字节数) 5、writebyte:用于向文件流中写入一个字节,形式文件流的名字.writebyte(写入的字节值) 6、seek方法:用于将

29、文件流的当前位置设置为给定值,形式:文件流名.seek(参照点的位移量,设置位置的参照点),位置的参照点是枚举型的,有begin(文件流的开头)、current(文件流的当前位置)、end(文件流的结尾)。通常使用seek方法实现文件的随机读写,即先使用该方法把文件留的位置指定到要读写的位置,然后再使用读写方法从文件流中读取数据或将数据写入到文件流中 7、flush方法,用于将保存在缓冲区中的所有数据真正的写入到文件中,形式:文件流.flush();再向文件中写入数据时,只是写到文件缓冲区中,只有调用flush方法才真正写入; 8、close方法关闭文件流并释放与当前文件流关联的全部资源。形式

30、:文件流名.close();115、streamwriter类:常用方法:1、构造函数,把指定的流初始化为streamwriter类的新实例,或者把指定路径上的指定文件初始化为streamwriter类的新实例。形式:streamwriter 实例名=new streamwriter(文件路径或者是流的名字); 2、write方法:用于将字符、字符数组、字符串写入流。形式:streamwriter.write(字符)或者streamwriter.write(字符数组)或者streamwriter.write(字符串)或者streamwriter.write(字符数组,写入的起始下标,写书字符的

31、个数) 3、writeline方法:方法功能于write方法相似,只需在写入的数据后面加上行结束符。4、streamwriter方法同样具有close和flush方法。注意:在每次新建一个文件流后一定要用flush方法将文件从缓冲区进行实际话,并且每次建立streamwriter实例后,经过一系列方法后,同样也要用flush方法进行实际话;116、streamreader类:常用方法:1、构造函数,形式:streamreader 实例名=new streamreader(文件路径或者是流的名字); 2、read方法:用于读取输入流中的下一个字符,并使流的当前位置提升一个字符,形式:stream

32、reader流的实例.read(); 其返回值为int型的数据; 3、readline方法,用于从输入流中读取一行数据并将数据作为字符串返回。返回的字符串不包含回车和换行符。形式:streamreader流的实例.readline();返回值是一个字符串; 4、peek方法:返回一个可用的字符,若没有可用的字符,则返回-1,peek不会改变streamreader的当前位置。返回值为int型。使用streamwriter类和streamreader类进行文件读写。文件的写入方法filestream yu =new filestream (”d:yu.txt”,filemode.openorcr

33、eate,fileaccess.readwrite);streamwriter yu1=new streamwriter (yu);yu1.writeline(“写入的内容”); yu1.flush();yu.flush();yu1.close();yu.close();文件的读方法:filestream yu =new filestream (”d:yu.txt”,filemode.openorcreate,fileaccess.readwrite);streamreader yu1=new streamreader (yu,system.text.encoding.utf8);yu1.ba

34、sestream.seek(0,seekorigin.begin); /从文件头开始读while(yu1.peek()-1)console.writeline(yu1.readline();117、binarywriter类:常用方法:1、构造函数,形式:binarywriter 类名=new binarywriter(流名)或者binarywriter 类名=new binarywriter(流名,编码形式) 2、seek方法:用于将文件流的当前位置设置为给定值,形式:文件流名.seek(参照点的位移量,设置位置的参照点),位置的参照点是枚举型的,有begin(文件流的开头)、current

35、(文件流的当前位置)、end(文件流的结尾)。 3、用于把值写入到流中,形式:类名.write(数据类型 名)或者类名.write(byte 名)或者类名.write(char 名);118、binaryreader类:常用方法:1、构造函数,形式:binaryreader 类名=new binaryreader(流名)或者binaryreader 类名=new binaryreader(流名,编码形式) 2、读取基本数据类型的主要方法为readboolean、readbyte、readchar等,此类方法均能从流中读取相应类型的数据并把读取的数据作为返回值,并使流的位置提升相应类型的字节数。

36、 3、readbytes方法,形式流名.readbytes(读入的字节数count)用于读取字节数组,从当前字节流中读入count个字节的字节数组,并使当前位置提升count个字节,返回值为字节数组; 4、readchars方法,形式:流名.readchars(count)用于读取字符数组,从当前字节流中读入count个字符,并使当前位置提升count个字符,返回值为字符数组119、try catch语句的使用:try 正常处理模块 catch(exception 名字)错误处理模块120、多重catch语句的使用。注意:多重catch语句可以加入任意多个catch块,处理不同类型的错误,并且

37、可以省略finally块;对于catch块进行搜索时,需要注意将比较具体的异常放在前面,即由烦到简,否则无法编译通过。121、嵌套异常处理语句,原则:在外层try块内,内层try块外抛出的异常又外层catch快捕捉处理;在内层的try块内抛出的异常,如果内层的catch块内有合适的处理程序,则有内层的catch块捕捉处理,处理后继续执行外层的try块,如果内层的catch快中没有合适的处理程序,则依次搜索外层的catch块,直到被捕捉处理,处理后不会执行外层的try块中的代码;122、自定义异常捕捉类:throw关键字人为抛出异常。自定义异常类应以exception结尾,并且自定义异常类必须包

38、含构造函数;123、c#编程约定:1、注释 2、命名规则(camel,pascal,匈牙利命名法则); 3、类的命名使用pascal规则; 4、类的字段,参数的命名使用camel规则 5、方法的命名使用pascal规则; 6、属性、常量、接口、事件、命名空间的命名使用pascal命名规则;124、使用var关键字声明变量,var a=199;此时编译器将推断啊为int型的,而不是byte型或者其他型,编译器会向更宽的数据类型推测,但也不能是double类型,编译器会节省内存空间。注意:var a;a=99;是错误的,声明和赋值不能分开。var不能用于类范围,不能为类的字段。不能在一个语句中声明

39、多个隐式变量,如var a=100,b=90;。125、可以用var关键字声明隐式数组,隐式数组字符串允许有null,但不能全为null;声明方式var a=new 数组元素;126、匿名类型;127、扩展方法:实现步骤:1、必须添加一个静态类,用来包含添加的扩展方法; 2、要添加的扩展方法必须为静态方法; 3、方法参数列表中的第一个参数必须以this开始,然后是要扩 展的类型名称和参数名;128、扩展方法的特性:扩展方法只能访问类中的公共方法和属性,不能访问私有成员;普通静态方法都是在类名后面加上方法名,但是扩展方法必须通过实例来引用。定义了扩展方法后,可以直接通过实例化的对象引用;129、

40、lambda表达式,通过表达式运算符=左边输入参数(如果存在参数),表达式运算符右边输入表达式或者语句块,可以构建匿名方法;130、lambda表达式中参数不需要声明类型,编译器可以推断,当然也可以用(int x)=方法体的方式声明;当参数为多个时,需呀用括号括起来,形如(x,y)=方法体;如果没有参数,则为空括号;131、注意:1、lambda表达式包含的参数数量必须与委托类型包含的参数数量相同; 2、lambda中的每个输入参数都必须能够隐式转换为委托所对应的参数; 3、lambda的返回值(如果存在)必须能够隐式转换为委托的返回值; 4、lambda表达式不能包含目标位于所包含匿名函数体

41、外部或内部的goto语句、break语句、continue语句;windows form1. 如果想为一个事件添加方法,可以使用 += 操作符,同时还可以通过 -= 操作符取消这些相应方法;例如:button1.click+=new 事件;2. 窗体的属性3. 窗体的方法:1.show和hide方法用于显示或隐藏窗体,形式:窗体名.show();窗体名.hide(); 2.close方法,用于关闭窗体,形式:窗体名.close(); 3.focus方法:用于激活窗体并给予焦点4.窗体的事件:语法形式:private void 窗体名_事件名(object sender,eventargs e)

42、 事件响应代码 1.load事件:加载窗体时被引发。它在窗体显示之前被执行,通常是一些初始化工作。2.activated事件:窗体获得焦点时(被激活)被引发。可以处理窗体被激活时需要更新的内容。3.deactivate事件:窗体失去焦点时被引发。4.formclosing事件:在关闭窗体时发生。5.formclosed事件:关闭窗体后发生。可以使用此事件执行一些诸如释放窗体占用的内存资源、保存输入窗体中的信息或者更新其父窗体的任务。5.新建窗体的方法,form1 窗体名=new form1();并且新建的窗体的visible应该是true 否则新建的窗体不可见;6.继承已有窗体的方式:1、通过

43、编程的方式继承,形式:class 子窗体名称:基窗体所在的命名空间名称.基窗体名称;2、使用继承选择器创建继承窗体,注意如果想修改子窗体控件的属性,必须将基窗体各个控件的modifiers属性改为public7.常用的控件: 1、label控件及其属性,注意usemnemonic属性以及tabindex属性2、textbox控件及其属性,textbox控件的事件的添加方式3、textbox控件常用的事件,textchanged事件:用户在文本框输入新信息或改变了text属性值时,触发该事件。keypress事件,当用户在文本框具有焦点时按任意键,均会触发该事件。gotfocus事件:当用户单击

44、该控件或者按tab键时获得焦点,触发该事件。4、textbox控件的方法:select()方法:用于选择文本框的内容,语法形式:textbox.select(第一个字符的位置,选择的字符数),返回值为空;copy()方法:将文本框当前选定的内容复制到剪贴板,参数为空,返回值为空;cut()方法:将文本框当前选定的内容剪贴到剪贴板,参数为空,返回值为空;paste()方法:用于将文本框中的当前选定的内容用剪贴板的内容替换,参数为空,返回值为空。clear()方法,用于清空文本框;5、button控件及其属性;button控件的常用事件:click事件:当用户单击时,触发该事件。mousedown

45、当光标位于控件上并且按下鼠标时,触发该事件。mouseup事件:当光标位于空间上并且释放鼠标时,触发该事件。6、checkbox控件和radiobutton控件:checkbox控件是多选控件,每个选项都是独立的,可以单选,可以多选。而radiobutton控件为单选,只能选择一个;注意textalign属性与checkalign属性。常用事件:click事件:单击时触发该事件。checkedchanged事件:当checked改变时,触发该事件。7、combobox控件与listbox控件:listbox是列表框,用户可以从中选择一项或者多项;combobox,为组合框,允许用户自己输入文本

46、或者从列表框中自己选择一项或者多项。8、listbox控件的属性:milticolumn属性、scrollalwaysvisible属性、selectionmode属性、sorted属性、items属性selectedindex属性(只能在程序中使用,若没有任何选定项,则该值为-1.可移动过索引获得当前选定项,语法形式:string a=(string)listbox1.itemslistbox1.selectindex;返回string类型)、selectitems与selectindex属性相似,只不过是返回多个选项。selectindices属性,此属性返回一个集合,该集合包含列表框中选

47、定所有项的索引;text属性:该属性存放列表框中当前选定项的文本,此属性返回第一个选定项的文本。 9、listbox控件的常用事件:selectedchanged事件,当selectedchanged属性变化时触发该事件。10、listbox控件的常用方法:items.add(添加的列表项)、items.insert(插入为主,插入的列表项)、items.clear()清空列表、items.remove(移除的列表项)、setselected()(对列表项进行选择或者取消选择),形式:listbox1.setselected(索引的位置,true(选择)false(取消选择))、findstr

48、ing方法,形式:int a=listbox1.findstring(要找的字符串);(a是字符串的位置); 11、combobox控件,dropdownstyle属性。combobox常用事件,dropdown事件:当显示组合框的下拉部分时触发该事件,也可认为单击下拉箭头时发生。dropdownclosed事件:当组合框的下拉部分不可见时,触发该事件。combobox控件的方法:add()、insert()、clear()、remove()方法均与listbox一样;12、datetimepicker控件,format属性、showupdown属性、value属性、showcheckbox属

49、性、customformat属性。13、picturebox控件,用于显示图像,name属性、visible属性、image属性。掌握从本地计算机导入一张图片的方法。14、progressbar控件:minimum属性、maximum属性、value属性、step属性。常用方法:performstep()方法:按照step属性中指定的数量增加进度条的值,使进程条案固定值递增。increment(int value)方法,使显示值按指定的整数进行更改,使进度条按动态值递增。15、webbrowser控件,将web控件和windows窗体控件结合到一个应用程序中。url属性,更新地址栏获取或设置当

50、前网页的url。设置该属性时,会将该控件重新定位到新的url。documenttitle属性,更新标题栏。scrollbarsenabled属性,设置网页显示框是否显示滚动条。常用事件:navigated事件:在webbrowser控件导航到新文档并开始加载该文档时发生。该事件可用于实现使用url属性的值更新地址栏,使用documenttitle属性的值更新标题栏。documentcompleted事件。完成网页加载时触发该事件。webbrowser控件的方法,navigate()方法,实现地址栏定位到指定的url。goforward()方法,若导航历史中的下一页可用,则导航到该页,实现浏览器

51、的前进功能。goback(),若导航历史中的上一页可用,则导航到该页,实现浏览器的后退功能。refresh()刷新该页面。gohome()方法:将浏览器返回找到当前用户的主页。16、groupbox控件,text属性,visible属性17、panel控件,autoscroll属性,设置面板控制条是否显示滚动条。backcolor属性,设置面板的背景颜色。backgroundimage属性,设置背景图片。backgroundimagelayout属性,设置面板背景图片显示的模式。borderstyle属性,设置面板轮廓样式。18、flowlayoutpanel控件,布局面板,一种容器控件,可以

52、将该控件的内容从一行换至下一行,或者从一列换至下一列,还可以选择裁剪内容而不是换行。主要属性:flowdirection属性,布局面板上各控件的排列方向。wrapcontents属性,设置换行还是裁剪控件的内容。autosize属性,设置是否可以自动调整控件的内容以容纳所有内容。flowbreak控件,取值为true时,空间停止在当前流方向布局控件,并且换到下一行或下一列。19、tabcontrol控件,添加或移除选项卡的方法;常用属性:multiline属性,设置是否可以创建多行选项卡。true属性的话可以创建多行选项卡。alignment属性,设置在控件的那一侧排列选项卡。20、split

53、container控件,创建复合的用户界面。orientation属性,选择拆分模式。fixedpanel属性,设置控件的大小,issplitterfixed属性,该控件决定是否可以通过键盘或者鼠标移动控件。splitterdistance,设置从左边缘或者上边缘可以移动拆分条的距离。常用事件:splitcontainer空间会引发两个事件,splitmoving在移动过程中引发,splitmoved在事件结束后引发。windows forms 高级应用1. treeview控件,nodes集合,设置包含树视图的顶级列表。scrollable属性,设置控件是否显示滚动条。showlines属性

54、,设置或获取一个值,确定是否显示连接子节点和父节点的线条。checkbox属性,设置是否在节点旁边显示带有复选框的树视图。常用的方法,nodes.add(),向树视图中添加节点。形式:treeview.nodes.add(节点的名字);nodes.remove()方法,删除节点。nodes.clear();清除所有节点。常用事件,afterselect事件,当用户选定树节点后触发该事件2. listview控件,用于显示带图标的项的列表。view属性,用于设置列表视图的视图模式。items属性,设置包含列表视图显示的项。 columns属性,通过这个属性可以访问列集合,可以增加或者删除列,该属性只适合details视图模式。group属性,可以以组的形式显示相关的项。常用的方法,beginupdate()方法,当调用这个方法后,将告诉列表视图开始更新,知道调用到endupdate为止。endupdate(0方法,在调用beginupdate方法之后,表示更新结束,然后重绘listview。clear()方法,彻底清除列表。常用事件:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论