一、常用快捷键
- F5:调试运行程序
- ctrl+f5:不调试运行程序
- F11:逐语句调试程序
- F10:逐过程调试程序
二、字符串方法
- PadLeft(int totalwidth,char paddingchar):在字符串的左侧填充字符。
- PadRight(int totalwidth,char paddingchar):在字符串的右侧填充字符。
- 注:totalwidth:填充后字符串的长度。 paddingchar:填充的字符,若省略,则填充空格符号
- Substring(int startindex(子字符串的起始位置的索引),int length(子字符串的长度)):截取字符串中指定位置和指定长度的子字符串。
- Split(char[] separator(分割符数组)):分割字符串,返回所有分割子字符串的数组对象,可以通过数组获取所有分割的子字符串。
- Insert(int startindex(插入字符串的位置),string value(要插入的字符串))
- Remove(int startindex(开始删除的位置),int count(删除的字符数量,不能为负数和0)):从指定位置开始,删除指定数量的字符。count省略将删除从开始位置到最后的所有字符
- Compare(string a,string b,bool ignorcase):比较两个字符串是否相等。bool ignorcase比较时是否忽略大小写。为True忽略。逐个字符比较在英文字典中的位置,前面的小于后面的。
- a.Compareto(string b):实例对象本身与指定字符串比较。
- Equals(string value),Equals(string a,string b):比较两个字符串是否相同,相同返回true,不同返回false
- .ToString(“C”):数字格式化为货币格式
- Copy(string str(待复制的字符串)):创建一个与指定字符串具有相同值的字符串新实例
- CopyTo(int sourceindex(待复制字符的起始位置),char[] destination(目标字符串),int destinationindex(目标数组中开始存放的位置),int count(要复制的字符数)):将字符串的某一部分复制到另一个数组中。
- Replace(char old,char new),Replace(string old,string new):将字符串中的某个字符或字符串替换成其他的字符或字符串
- StringBuilder:可变字符串,可通过追加,修改,移除,替换,插入方式修改。
Append(),Appendformat(),Insert(),Remove(),Replace()
正则表达式
- 元字符
- “^”匹配行的开始;
- "$"匹配行的结尾;
- "."匹配除换行符以外的任意字符
- “\b”匹配单词的开始或结束
- “\w”匹配字母,数字,下划线或汉字
- “\s”匹配任意的空白
- “\d”匹配数字
- 限定符
- ?匹配前面的字符零次或一次
- +匹配前面的字符一次或多次
- *匹配前面的字符零次或多次
- {n}匹配前面的字符n次
- {n,}匹配前民的字符最少n次
- {n,m}匹配前面的字符最少n次,最多m次
- 字符类:在方括号中列出[abvd],指定范围
- 匹配任意一个汉字:[\u4e00-\u9fa5]
- 匹配连续多个汉字:[\u4e00-\u9fa5] +
- 排除字符:[^]
- 选择字符“|”
- 转义字符:“\”
- 小括号():改变限定符的作用范围,分组(子表达式)
C#中的正则表达式
- Regex类方法:
- isMatch(string str,@正则表达式): 正则表达式在输入字符串中是否找到匹配项
- Match():在输入字符串中搜索正则表达式的匹配项,并将精确结果作为单个Match对象返回
- Matches():在输入字符串中搜索正则表达式的所有匹配项并返回所有成功的匹配,就像多次调用Match一样
- Replace():用指定的替换字符串替换由正则表达式定的字符模式的所有匹配项
- Split():在由正则表达式匹配项定义的位置将输入的字符串拆分为一个子字符串数组
数组
- Array.sort(数组):对数据元素排序,从小到大。数组不能为空,不能是多维数组,只对一维数组排序
- Array.Reverse(数组):反转数组。
ArrayList类
-
动态添加和删除元素
-
3个构造器:
-
ArrayList():默认构造器,会以默认大小(16位)初始化内部数组
-
Arraylist(icollection):用一个ICollection对象来构造,并将该集合的元素添加到ArrayList中。
-
ArrayList(int ):用指定的大小初始化内部数组。
-
ArrayList常用属性
capacity:可包含的元素数
count:实际包含的元素数
isfixedsize:是否具有固定大小
isreadonly:是否只读
issynchronized:是否同步对Arraylist的访问
item:获取指定索引处的元素
syncroot:可用于同步Arraylist访问的对象 -
ArrayList常用方法
add(object value):将对象添加到集合的结尾处,允许null值作为有效值,并且允许重复的元素
insert(int index,object value):将元素插入集合指定的索引处
clear():移除所有元素
remove(object value):移除特定对象的第一个匹配项
removeat(int index):移除指定索引处的元素
removerange(int index,int count):移除一定范围的元素
contains(item):包含某个元素
哈希表
-
键/值对的集合,键不能为空,但值可以为空
-
初始化:hashtable(); hashtable(int capacity)
-
常用属性
count:键值对的数目
isfixedsize:是否具有固定大小
isreadonly:是否只读
item:设置或获取与指定键相关联的值
Keys:获取包含hashtable中的键的ICollection
values:获取包含hashtable中的值的ICollection -
常用方法
add(key,value):添加指定的键和值元素
clear():移除所有元素
remove(key):移动指定键的元素
contains(key):是否包含特定键
containsvalue(value0):是否包含特定值
对象
- 不支持静态局部变量,不能在方法中声明静态变量
- 静态成员属于类型本身,不属于特定对象,因此不需要使用对象访问它。主要用途是保留已实例化的对象数的计数,存储必须在所有实例间共享的值
- 静态类只能包含静态成员,无法进行实例化,所有不能定义实例构造函数
- this关键字:指类的一个对象,可以调用成员变量,成员方法,还可以作为返回值
- 类是单继承
- base关键字:代表父类对象
- 访问父类成员只能在构造函数,实例方法,实例属性中进行,从静态方法中使用base关键字是错误的
- 重写父类方法时,修饰权限只能从小范围到大范围改变,如,父类是protected,子类只能是public 不能是private
- 多态:多种实现,通过重写虚方法或重载实现。
- 虚方法:方法前面加virtual关键字,在派生类中可以重写(override)虚方法。类中成员字段和静态方法不能声明为virtual,因为virtaul只对类的实力函数和属性有意义
- 结构是值类型
- 结构不能从结构或类继承,但可以实现接口,在结构中初始化实例字段是错误的,除非声明为const 或static,否则无法初始化。
Windows窗体
-
设置启动窗体:program.cs的Run(Form mainForm(要启动的窗体))方法用于在当前线程上运行标准应用程序。
-
如:Rum(new Form1()) 启动Form1;
-
Icon属性:系统左上角默认图标
-
FormBorderStyle:标题栏属性。none,隐藏标题栏 sizable:可调整大小的边框。sizabletoolwindow可调整大小的工具窗口边框
FixedToolWindow:不可调整大小的工具窗口边框,FixedSingle:固定的单行边框。FixedDialog:固定的对话框样式的粗边框。Fix3D:固定的三维边框 -
StartPosition:窗体的显示位置 centerparent:在父窗体中居中。 centerScreen:在当前显示窗口中居中 manual :位置有location属性决定
windowsDefaultBounds:定位在windows默认位置,其边界由windows默认决定
windowsDefaultLocation:定位在windows默认位置,其尺寸在窗体大小中指定 -
Size:窗体的大小,用int类型数据定义,不要使用单精度和双精度进行设置
-
BackgroundImage:窗体的背景图片
-
Show():窗体的显示
-
Hide():窗体的隐藏
-
Load()事件:可以分配窗体的使用资源
-
FormClosing()事件:窗体关闭时,可释放资源,保存信息或更新父窗体。若要防止窗体关闭,CancelEventArgs的Cancel属性设置为True.
-
MDI窗体:多文档界面,容器是父窗体(IsMdiContainer=true),只能由一个父窗体,其他子窗体不能移出父窗体的框架区域。
-
子窗体:通过mdiparent确定父窗体
-
排列子窗体:LayountMdi(Mdilayout value)
Mdilayout枚举值:
Cascade:所有子窗体均层叠在MDI父窗体工作区
TileHorizontal:所有子窗体水平平铺在MDI父窗体工作区
TileVertical:所有子窗体垂直平铺在MDI父窗体工作区 -
创建继承窗体:
-
为了从一个窗体继承,包含该窗体的文件或命名空间必须已编译成可执行文件或DLL
-
编程方式创建窗体继承:在类定义中将引用添加到继承窗体,引用应包含该窗体的命名空间.窗体名 如 public Form2:test.Form1 (Form2 继承Form1)
-
继承选择器创建继承窗体
控件
-
窗体 AcceptButton属性:设置窗体“接受”按钮,按下Enter键触相当于单击该按钮 Form1.AcceptButton=button1
-
CancelButton属性:设置窗体“取消”按钮 按下"ESC"相当于单击该按钮 Form1.CancelButton=button2
-
TextBox:
PasswordChar属性:设置显示密码字符,如“@”,
UseSystemPasswordChar属性:设置为true,显示密码“*”
Multiline属性:是否多行数据
SelectionStart:选择开始位置
SelectionLength:选择文本的长度 -
RichTextBox
Multiline:是否显示滚动条。默认true,显示滚动条
ScrollBars: 设置滚动条的属性,none ,不显示滚动条,Both,两个滚动条都显示,horizontal 水平滚动条,Vertical 垂直滚动条
ForcedHorizontal:wordwrap为false时,显示水平滚动条,文本未超出时,显示为灰色
ForcedVertical:始终显示垂直滚动条,文本未超出时,显示为灰色
ForcedBoth:始终显示垂直滚动条,wordwrap为false时,显示水平滚动条。文本未超出时,均为灰色
WordWrap:是否自动换行,若为true,不论scrollbars属性是什么,水平滚动条都不显示
SelectionFont:文本的字体,大小,字样
SelectionColor:字体的颜色
LinkClicked事件:编写超链接点击事件(超链接必须“Http://”开头,且http的前面不能用数字和字母,只能是空格或汉字,否则无法实现超链接操作)
SelectionBullet属性:可将选定的段落设置为项目符号列表格式。selectionIndent 和selectionRightindent 设置段落相对于空间左右边缘缩进 -
ComboBox:选择列表框,
dropdownstyle: simple: 控件的列表部分总是可见。dropdown:默认值,可编辑文本框部分,点击右侧箭头显示列表部分。dropdownlist ,不能编辑文本框。呈现下拉框的样式
selectall():可以选择combobox控件的可编辑部分的所有文本 -
NumericUpDown:数值选择控件
maximum:最大值
minimum:最小值
decimalplaces 设置小数点后显示几位小数,默认是0,不能小于0或大于99.否则抛异常 -
listbox
horizontalscrollbar:设置水平滚动条
scrollalwaysvisible:设置 垂直滚动条
selectionMode: 是否允许多选。 None,无法选择项,one 只能选择一项,multisimple:可以选择多项 multiextended:可以选择多项,可以使用shift,ctrl键和箭头键来选择
MultiColumn:是否支持多列 -
panel容器控件: 为其他控件提供分组功能,可以有滚动条。Enabled 属性设置为false,z容器中所有控件将被设置为不可用状态
-
groupbox分组控件:通过分组细分窗体功能,包含的空间集周围总是显示边框,可以显示标题,但没有滚动条。
-
tabcontrol:选项卡控件, appearance属性设置按钮样式,Buttons 三维外观样式,flatbuttons,平面按钮外观
-
tabpage:选项卡, showtooltips 显示提示信息。 tooltips 提示内容
-
menustrip:菜单控件
-
toolstrip:工具栏控件,包含8中工具控件,可以设置显示图像。
-
statusstrip:状态栏控件,可以包含toolstripdropdownbutton ,toolstripsplitbutton,toolstripprogressbar控件
-
iamgelist:存储图像资源,并在空间显示。images属性包含所有图片,每个图片可以通过索引或键值访问。所有图像同样大小显示由imagesize属性设置,add(image)添加图片,removeat(index) 从列表中移出图像,clear()移除所有图片
-
listview:显示带图标的选项列表
view: details:详细信息显示 LargeIcon:大图标显示,下面由标签,默认方式 list:显示一个小图标,右边带一个标签,各项排列在列中,没有列箭头 smallicon:显示一个小图标,右边带一个箭头 tile:显示为完整大小的图标,右边带项标签和子项信息
add(text,image):添加新项
removeat(index):移除指定索引的项
clear():移除所有项
selected:是否选中
smallimagelist,largeimagelist,stateimagelist:列表中使用的各种图片,与imagelist控件绑定,通过imageindex,stateimageindex引用到列表项。
gridllines:行和列之间是否显示网格线
fullrowselect:单击某项是否选择其所有子项,必须将view设置为details
groups:分组集合 add(listviewgroup),添加分组,removeat(index)移除分组 ,clear()清空分组
listviewgroup:分组
showgroups:临时禁用分组功能,设置为false -
treeview:显示节点层次结构,每个节点可以包含子节点,包含子节点的叫父节点
add(treenode):添加节点
remove(treenode):删除节点
afterselect事件中,使用eventargs返回对单击节点对象的引用(e.node)
imagelist:设置控件使用的imagelist控件属性
imageindex,selectimageindex:设置正常和展开状态下节点的图像,或选定状态下的节点图像 -
datetimepicker
format:显示日期和时间格式 值为datetimepickerformat枚举 (time,以用户系统设置的时间格式显示日期时间值。short:系统设置的短日期格式显示日期时间,long:系统设置的长日期格式显示日期时间。custom:自定义格式显示日期时间)
showupdown:是否在控件内用按钮调整时间值
customformat:自定义日期时间格式,format 属性为cutom 才能设置次属性
text:返回与控件格式相同的日期时间完整值
value:返回时间,日期部分值。方法包含,year(),month(),day(),toshortdatestring(),toshorttimestring()使用tostring()可将信息转换成显示给用户的字符串 -
Monthcalendar:显示一个月历,
showweeknumbers:是否显示周数
calenderdimensions:同时显示多个月,最多显示12个月 通过size()设置水平,垂直方向显示的月份个数。一次值显示一个日历年,最先可现实12个月,行,列的最大乘积是12,对于大于12的,将在最合适的基础上修改显示
selectionstart,selectionend:要在控件中选择日期范围,必须设置这两个属性,分别设置日期起始和结束日期 -
errorprovider:显示有错误发生
seterror(control ,msg):设置指定控件的错误描述字符串 -
helpprovider 调用帮助文档 按F1打开帮助文档
helpnamespace:设置与helpprovider对象关联的帮助文档名。
setshowhelp(control, bool):是否显示指定控件的帮助信息
sethelpstring():提供帮助文本 -
Timer控件:设置时间间隔,定期引发事件,为window窗体环境设计的
interval:时间间隔,毫秒为单位,每个时间间隔引发一个tick事件
Enabled:是否启用计时器
stop(),start():停止和启动定时器 -
Progressbar:显示程序运行的进度条,只能水平显示,若要改变样式, 使用progressbar renderer类实现。
minimum maxmum:设置最大值,最小值
value:已完成的进度
step:value属性递增的值,然后调用performstep()方法来递增该值
ADO.NET
-
connection :建立与物理数据库的链接,提供4种数据库对象类,对一个不同数据库
sqlconnection对象链接类,
open()打开链接,
state连接状态(connectionstate枚举,broken,中断,closed,关闭,connecting 正在连接,executing 正在执行命令 fetching 正在检索数据 open 打开状态)
closed()关闭连接,可以调用open()打开;
dispose() 关闭并清理连接占用资源,不能再调用open()打开,必须重新初始化连接后才能打开。
数据库操作后及时关闭,防止对数据库进行其他操作时被占用 -
command:数据命令对象,向数据库发送查询,更新,删除,修改操作的sql语句
connection :用于设置使用的sqlconnection
commandtext:设置要执行的SQL语句或存储过程
commandtype:设置commandtext的类型,storedprocedure:存储过程的名称,tabledirect表的名称,text,SQL文本命令
executeNonquery():执行SQL语句,返回受影响的行数。
executereader():执行sql语句,生成一个包含数据的sqldatareader对象实例。
executescalar():执行SQL语句,返回结果集中的第一行的第一列,或空引用(结果集为空) -
dataadapter 数据适配器对象,是dataset 和数据源之间的桥梁
selectcommand,deletecommand,insertcommand,updatecommand:向数据库发送查询,删除,插入,更新的SQL语句,对数据库进行操作时,只需要将这个4个属性设置为对应的SQL语句即可
fill(dataset,srctable):用数据填充dataset,可以多次调用srctable,若主键存在,则传入行会与已有的行合并,若不存在,则追加到dataset中
update(datable):更新数据库 -
datareader: 数据读取器对象,通过executereader()获取数据,提供只读,向前的游标。若需要每次从数据库取出最新的数据,或只需要快速读取数据,不修改数据,使用datareader对象进行读取
hasrows :是否包含一行或多行数据,判断结果是否有值
read():读取数据。
一个connection只能打开一个datareader。close()一个,才能打开一个 -
dataset:数据集
merge(dataset,bool,missingschemaaction):合并数据集,将dataset,datatable,datarow数组的内容合并到现在的dataset中。
bool:是否保留当前dataset的更改。
missingschemaaction枚举:add:添加必须的列完成架构。addwithkey:添加必须的列和主键信息完成架构,可以根据Key更新,不是追加 error: 缺少映射,生成invalidoperationexception ; ignore:忽略额外列
dataset对象为空则无法进行合并
copy():返回一个新的dataset,具有与该dataset相同结构和数据EntityFrameWork(EF)
-
EF是ORM框架,方便的将表映射到实体对象,或将实体对象映射为数据库表
-
ORM包含3个部分:域对象,关系数据库对象,映射关系。
-
EDM:EF实体数据模型,包含概念模型(csdl),映射(msl),存储模型(ssdl)
LINQ
- linq to sql:查询基于关系数据库的数据,对数据进行检索,插入,修改,删除,排序,聚合,分区
- linq to dataset:对dataset对象的进行操作
- linq to objects:查询ienumerable或ienumerrable集合,即任何枚举的集合,如arraylist, list,dictionary,以及用户自定义的集合
- linq to xml:查询操作XML结构的数据
- 尽量使用查询语法,,必须情况下才使用方法语法,如count,max等无查询表达式,则使用方法调用
- let 用于创建可以在查询后续部分中引用的临时变量,而 into 通常与 group by 一起使用,用于指定分组结果的存储位置
- xelement类
load(uri):加载文件中的xelement
setattributevalue(xname,value)添加属性的值,删除属性的值,设置属性值
add(object):将指定的内容添加为xcontainer的子级
datagridview
- datasource:指定数据源
- currentcell:当前单元格
- import(datarow):将datarow复制到datatable中,保留属性设置,初始值,当前值
- update(dt),更新数据
- selectionmode:设置如何选择单元格 cellselect,选择一个或多个单元格,columnheaderselect,单击列的标头选中此列,单击某个单元格选定此单元格。fullcolumnselect:单击列的标头或该列包含的单元格,选定整列
- readony :是否能编辑单元格
- selectbackcolor:选定单元格的背景色,属性包含在datagridviewcellstyle中。
- Allowusertoaddrows,allowusertodeleterows 和readonly:禁止添加或删除行
- datagridviewcomboboxcolumn:在单元格中添加下拉列表
面向对象
-
抽象方法必须声明在抽象类中,并不提供方法的实现。抽象方法不能用virtual,static,private修饰
-
类中有一个抽象方法,此类为抽象类,抽象类不能实例化。
-
继承抽象类的非抽象类必须重写抽象方法。
-
接口,为了实现多继承,包含方法,属性,事件,索引器,不能包含字段。所有方法都没有方法体。
继承接口的任何非抽象类型,必须实现接口的所有成员
不能实例化接口,接口成员必须是public -
抽象类和接口的区别
派生只能继承一个抽象类,可以继承多个接口
抽象类中可以定义成员的实现,但接口不可用
抽象类可以包含字段,构造函数,析构函数,静态成员和常量,但接口不可以
抽象类中成员可以是私有,受保护,内部等,但接口只能是Public -
索引器与属性的区别:
索引器的名称为this,this后是一对[],方括号内是索引的参数列表,其中至少有一个参数。
索引器不能被定义为静态的。即不能添加static -
迭代器:返回相同类型的值的有序序列,使用yield return 语句依次返回各元素。yield break,终止迭代。类型为ienumerable 或Ienumerator ,通过IEnumerator.getenumerator()创建迭代器。
-
泛型:允许程序员编写灵活、可重用代码的方法。可以创建类、接口、方法、委托等,在声明时包含一个或多个类型参数。
-
委托:方法的引用
-
delegate 类,multicastdelegate类都是委托类型的父类,但不能自定义类继承TM,只有系统和编译可以继承他们
-
事件
-
eventHandler 使用此委托发布委托类型
-
sender,事件的发布者
-
eventargs:事件包含的参数