c# 网络编程技术教程

58
1 C# 网网网网网网网网 网4网 C# 网网网网网网 Windows 网网

Upload: sondra

Post on 13-Jan-2016

96 views

Category:

Documents


0 download

DESCRIPTION

C# 网络编程技术教程. 第 4 章 C# 常用数据类与 Windows 编程. 学习目标. 掌握使用关键字 String 来定义字符串类型,以及利用 String 类型提供的成员来实现对字符串的操作。 了解常用的集合类型,掌握对数组元素进行各种操作的 ArrayList 类的使用方法。 了解 System.IO 命名空间中包含的用于对数据文件和流进行读写操作的类,重点掌握 File 、 Directory 、 Path 、 FileStream 等类的使用。 了解 .NET 中数据库编程的一般技术,重点掌握 ADO.NET 的使用。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: C# 网络编程技术教程

1C# 网络编程技术教程

第 4 章 C# 常用数据类与 Windows编程

Page 2: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

2学习目标

•掌握使用关键字 String 来定义字符串类型,以及利用 String 类型提供的成员来实现对字符串的操作。

•了解常用的集合类型,掌握对数组元素进行各种操作的ArrayList 类的使用方法。

•了解 System.IO 命名空间中包含的用于对数据文件和流进行读写操作的类,重点掌握 File 、 Directory 、 Path 、 FileStream 等类的使用。

•了解 .NET 中数据库编程的一般技术,重点掌握 ADO.NET 的使用。

•了解 Windows 程序设计的基本概念,掌握创建窗体的一般过程,以及窗体中各控件的使用,掌握菜单设计的步骤。

Page 3: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

3本章内容

4.1 String 类和 StringBuilder 类

4.2 ArrayList 类

4.3 文件与 IO 流

4.4 Windows 程序设计基础

4.5 数据库编程基础

Page 4: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

44.1 String 类和 StringBuilder 类

字符串将一组字符视为一个整体进行处理。 C# 使用关键字 string来定义字符串类型,它对应着 .NET 类库的 System.String 类,该类专门用于存储字符串,允许对字符串进行许多操作。4.1.1 字符串表示格式 string 类型是从 object 类直接继承的封装类型,定义 string 类型变量的形式为: string 引用标识符 {=“ 字符串值” } 例如: string str = "hello world!";另外还可以通过 string 类的构造函数来表示字符串,例如:( 1 ) public string(char,int) — 将一个字符重复多次形成字符串string str1=new string('a',3); //str1="aaa"( 2 ) public string (char[]) — 将一个字符数组全部转换成一个字符串char[] aa=new char[]{'h','e','l','l','o'};string str2=new string(aa); //str2="hello"( 3 ) public string(char[],int,int) — 将字符数组的一部分转换成字符串,其中第二个参数和第三个参数分别表示数组中转换部分的起始位置和长度string str3=new string (aa,0,4); //str3="hell"

Page 5: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

54.1 String 类和 StringBuilder 类4.1.2 常用字符串操作方法

方 法 作 用

Compare 比较两个指定的 String 对象

CompareTo 将此实例与指定的对象 String 进行比较,并返回二者相对值的指示

Concat连接 String 的一个或多个实例,或 Object 的一个或多个实例的值的 String 表示

形式

Copy 创建一个与指定的 String 具有相同值的 String 的新实例

CopyTo将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位

Equals 确定两个 String 对象是否具有相同的值

Format 将指定的 String 中的每个格式项替换为相应对象的值的文本等效项

IndexOf 报告 String 或一个或多个字符在此字符串中的第一个匹配项的索引

IndexOfAny 报告指定 Unicode 字符数组中的任意字符在此实例中第一个匹配项的索引

Insert 在此实例中的指定索引位置插入一个指定的 String 实例

LastIndexOf 报告指定的 Unicode 字符或 String 在此实例中的最后一个匹配项的索引位置

op_Equality 确定两个指定的 String 对象是否具有同一值

op_Inequality 确定两个指定的 String 对象是否具有不同的值

Page 6: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

64.1 String 类和 StringBuilder 类

PadLeft右对齐此实例中的字符,在左边用空格或指定的 Unicode 字符填充以达定的

总长度

PadRight左对齐此实例中的字符,在右边用空格或指定的 Unicode 字符填充以达到指

定的总长度

ReferenceEquals 确定指定的 Object 实例是否是相同的实例。(从 Object 继承)

Remove 从此实例中删除指定个数的字符

Replace将此实例中的指定 Unicode 字符或 String 的所有匹配项替换为其他指定的 U

nicode 字符或 String

StartsWith 确定 String 实例的开头是否与指定的字符串匹配

Substring 从此实例检索子字符串

ToCharArray 将此实例中的字符复制到 Unicode 字符数组

ToLower 返回此 String 转换为小写形式的副本

ToString 将此实例的值转换为 String

ToUpper 返回此 String 转换为大写形式的副本

Trim 从此实例的开始位置和末尾移除一组指定字符的所有匹配项

TrimEnd 从此实例的结尾移除数组中指定的一组字符的所有匹配项

TrimStart 从此实例的开头移除数组中指定的一组字符的所有匹配项

(续上表)

Page 7: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

74.1 String 类和 StringBuilder 类4.1.3 StringBuilder 类的常用方法

对字符串进行删除、插入、替换等操作时, StringBuilder 类提供的 Remove 、 Insert 、 Replace 方法和 String 类对应的方法基本相同,但使用上有一些差别。 1 . Remove 方法StringBuilder 类的 Remove 方法相当于 String 类中对应方法的第二个重载形式。Public StringBuilder Remove(int,int) — 删除字符串从指定位置开始的指定长度的子串2 . Replace 方法StringBuilder 类的 Replace 方法比 String 类的 Replace 方法有更多的重载形式。其 4 种重载形式为:Public StringBuilder Replace(char,char) — 将字符串中出现的所有指定字符替换成新的字符Public StringBuilder Replace(string,string) — 将字符串中出现的所有指定子串替换成新的子串Public StringBuilder Replace(char,char,int,int) — 将字符串中指定范围内出现的所有指定字符替换成新的字符Public StringBuilder Replace(string,string,int,int) — 将字符串中制定范围内出现的所有指定子串替换成新的子串

Page 8: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

84.1 String 类和 StringBuilder 类

3 . Insert 方法 StringBuilder 类的 Insert 方法也是在字符串的指定位置插入一个子串,但它接受的参数类型除了可以是 string 类型,还可以是各种数值类型以及object 类型。例如:StringBuilder str=new StringBuilder( ) ;str=str.Insert(0,DateTime.Now) ;str=str.Insert(4,‘ 年’ ) ;str=str.Insert(7,‘ 月’ ) ;str=str.Insert(11,‘ 日’ ) ;StringBuilder 类还有特有的 3 种方法: Append 、 AppendLine 和 AppendFormat ,它们都用于在字符串的尾端追加新内容。

4 . Append 方法Append 方法可以在字符串的尾端追加一个新串,它和 Insert 方法相似,接受的参数不仅可以是 string 类型,还可以是各种数值类型和 object类型。例如:StringBuilder str=new StringBuilder( );str.Append("UTC");str.Append(DateTime.Now.Hour);str.Append(" 时 ");

Page 9: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

94.1 String 类和 StringBuilder 类

5 . AppendLine 方法AppendLine 方法比较简单,只有 2 种重载形式:Public StringBuilder AppendLine ( ) — 在字符串末端追加一个换行符Public StringBuilder AppendLine (string) — 在字符串末端追加一个新串和一个换行符

6 . AppendFormat 方法AppendFormat 方法实际上是将 Append 方法和 String 类的静态方法 Format 结合在一起,先对一个字符串进行参数格式化,然后将得到的字符串追加到对象包含的字符串末端。

Page 10: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

104.2 ArrayList 类

ArrayList 类主要用于对数组中的元素进行各种处理,它通过 Add 、Insert 、 Remove 、 RemoveAt 这 4 种方法对数组进行操作。

1 . Add( )

Add( ) 方法用于将对象添加到 ArrayList 的末尾处。2 . Insert( )

Insert( ) 方法用于将数据元素插入到 ArrayList 的指定索引处。3 . Remove( )

Remove( ) 方法用于从 ArrayList 中删除指定对象的第一匹配项。4 . RemoveAt( )

RemoveAt( ) 方法用于删除 ArrayList 中指定索引处的数据元素。

Page 11: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

114.2 ArrayList 类

static void Main(string[] args){ // 实例化一个 ArrayList 对象 ArrayList myArrlist = new ArrayList( ); // 使用 Add 方法向 myArrlist 中添加对象 myArrlist.Add(" 星期一 "); myArrlist.Add(" 星期二 "); myArrlist.Add(" 星期三 "); foreach (int i in new int[3] { 1,2,3 }) { myArrlist.Add(i); } // 从 myArrlist 中删除值为 3 的第一个数据元素 myArrlist.Remove(3); // 从 myArrlist 中删除索引号为 3 的数据元素,即第 4 个元素 myArrlist.RemoveAt(3); // 从索引号为 2( 即第 3 个元素的位置处 ) 插入一个元素 myArrlist.Insert(2," 星期四 ");}

例如:

Page 12: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

124.3 文件与 IO 流

在 .NET 框架中,所有的输入输出操作都是基于流的方式。流是串行化设备的抽象表示,可以是一个文件、一个输入 / 输出设备或者是其他任何支持以线性方式读写的对象。 Stream 类是所有流类的抽象基类,它封装了操作系统和底层存储的各个细节,为用户提供了一致的方式来操作不同种类的数据源。与输入 / 输出操作相关的类都包含在命名空间 System.IO 中。

4.3.1 文件操作在 .NET 框架中,使用 File 类来实现对文件的操作。

1 .判断文件是否存在( Exists ) 通过 File 类的 Exists( ) 方法(参数是文件的路径),能够简单快速地判断文件是否存在。如果文件存在,返回值为 True ,如果文件不存在,返回值为 False 。例如: File.Exists ( "d:\abc.txt" ) 2 .创建文件( Create ) File 类的 Create( ) 方法可以方便地创建文件(参数是文件路径以及文件名),并返回一个 FileStream 对象,提供对创建的文件进行读写访问。例如: FileStream fs = File.Create ( "abc.txt" )

Page 13: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

13

3 .删除文件( Delete ) File 类的 Delete( ) 方法用来删除指定的文件。例如: File.Delete ( "d:\abc.txt" )4 .复制文件( Copy ) File 类的 Copy( ) 方法可以复制文件,它有两个参数:一个是源文件的路径及其文件名,另一个是目标文件的路径及其文件名。例如: File.Copy ( "d:\abc.txt","c:\abc.txt" ) 如果目标文件已经存在,则复制失败。如果要覆盖目标文件,可以使用这样的形式: File.Copy ( "d:\abc.txt","c:\abc.txt",true )5 .移动文件( Move ) File 类的 Move( ) 方法可以对文件进行移动。例如: File.Move (“ d:\abc.txt”,“c:\abc.txt” )6 .返回文件属性( GetAttributes ) File 类的 GetAttributes( ) 方法用来返回指定文件的属性,文件属性用枚举类型 System.IO.FileAttributes 表示( Archive 表示归档属性, ReadOnly 表示只读属性, Directory 表示是否为一个目录等)。 FileAttributes attrib = File.GetAttributes ( "d:\abc.txt" ) if (( attrib&FileAttributes.ReadOnly ) !=0 ) Console.Write ( "abc.txt is ReadOnly!" )

4.3 文件与 IO 流

Page 14: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

14

7 .设置文件属性( SetAttributes ) File 类的 SetAttributes( ) 方法用来设置文件的属性。例如: FileAttributes attrib = FileAttributes.Archive| FileAttributes.ReadOnly File.SetAttributes("d:\abc.txt",attrib)8 .返回文件创建日期和时间( GetCreationTime ) File 类的 GetCreationTime( ) 方法用来返回指定文件的创建日期和时间。例如: DateTime dt = File. GetCreationTime("d:\abc.txt") Console.Writeline(dt.TolongDateString( ))

除了 File 类外, .NET 还提供了 FileInfo 类来对文件进行操作。这个类的作用及其所包含的属性和方法与 File 类相似,只是它的方法是动态的,在使用这些方法前必须先实例化 FileInfo 对象。

4.3 文件与 IO 流

Page 15: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

15

4.3.2 目录操作在 .NET 框架中,使用 Directory 类来实现对目录的操作 。 1 . 判断目录是否存在( Exists ) Directory 类的 Exists( ) 方法可以判断目录是否存在,若文件夹存在,返回值为 True ,若文件夹不存在,返回值为 False 。例如: Directory.Exists("d:\\example")2 .创建目录( CreateDirectory ) Directory 类的 CreateDirectory( ) 方法用来创建指定路径中包含的所有目录和子目录,并返回指定目录的 DirectoryInfo 对象。例如: Directory.CreateDirectory(d:\\example)3 .删除目录( Delete ) Directory 类的 Delete( ) 方法用来删除指定的目录。例如: Directory.Delete("d:\\example") 删除指定的空目录,如果目录非空,操作失败 Directory.Delete("d:\\example",True) 删除指定目录以及它的所有子目录4 .移动目录( Move ) Directory 类的 Move( ) 方法用来移动指定目录。例如: Directory.Move("d:\dir","d:\c#\dir")

另外, .NET 还提供 DirectoryInfo 类对目录进行操作。

4.3 文件与 IO 流

Page 16: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

16

4.3.3 路径操作 .NET 提供的 Path 类主要用于处理路径中的字符串, 而不是针对用户指定的路径。1 . ChangeExtension( ) 该方法用来改变指定文件的扩展名,并返回具有新扩展名的文件路径。 例如: String nPath=Path. ChangeExtension("d:\abc.txt","doc2 . GetExtension( ) GetExtension( ) 方法返回指定文件的扩展名。例如: String ext = Path.GetExtension("d:\abc.txt")3 . Combine( ) Combine( ) 方法用来合并两个路径的字符串。例如: String nPath = Path.Combine("d:\","example\dir""4 . GetDirectoryName( ) 该方法返回指定文件的目录部分,即指定文件路径的最后一个反斜线前面的部分。例如:String dir = Path.GetDirectoryName("d:\example\dir\abc.txt") 5 . GetFileName( ) 返回指定文件的文件名,即返回指定路径字符串最后一个反斜线后面的部分。例如:String dir = Path.GetFileName("d:\example\dir\abc.txt")// 返回 abc.txt6 . GetFileNameWithoutExtension( ) 返回指定文件的文件名,不包含后缀名。7 . GetPathRoot( ) 返回指定路径的根目录。

4.3 文件与 IO 流

Page 17: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

174.3 文件与 IO 流4.3.4 读写文件

1 . FileStream 类 FileStream 类主要用于对文件进行读写操作。 FileStream 类常用的属性如下:

属 性 作 用

CanRead 设置当前流是否支持读取

CanSeek 设置当前流是否支持查找

CanWrite 设置当前流是否支持写入

Length 返回流长度

Name 返回传递给构造函数的 FileStream 的名称

Position 返回流的当前位置

Page 18: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

184.3 文件与 IO 流FileStream 类的常用方法

方 法 作 用

Close 关闭当前流,释放与当前流有关的资源

Flush清除当前流的所有缓冲区,使所有缓冲区的数据写入基础设备

Read 从流中读取字节块并将该数据写入给定缓冲区Seek 将流的当前位置设置为给定值Write 将从缓冲区读取的数据写入到当前流

FileStream 的构造函数有多种不同的重载形式,最简单的构造函数只有两个参数,即文件名和 FileMode 的枚举。

FileMode枚举 作 用

Append打开文件并定位到文件尾,若文件不存在,则创建一个新的文件,这种方式必须和 FileAcess.Write 一起使用

Create 创建新文件,若文件存在,则覆盖原来文件CreateNew 创建新文件,如果文件存在,则操作失败

Open 打开已有文件OpenOrCreate 打开已有文件,如果文件不存在,则创建新文件

Truncate 打开已有文件,并把文件长度截断为零字节大小

FileMode枚举成员

Page 19: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

194.3 文件与 IO 流2 .文件的写入( 1 ) StreamWriter 类。 StreamWriter 类是用来向文本文件写入字符串的类,它提供了一些写入数据的方法。

① Close( )Close( ) 方法用于关闭当前 StreamWriter 对象和基础流。

② Flush( ) 方法Flush( ) 方法用于清理当前写入器的所有缓冲区,并将所有缓冲数据写入基础设备。

③Write( )Write( ) 方法用于向文本流中写入字符串,但不追加换行符。

④WriteLine( )WriteLine( ) 方法用于向文本流中写入字符串,并自动追加换行符。

举例:利用 StreamWriter 类将字符串写入文本文件 abc.txt 。 Public void WriteText( ){ System.IO.StreamWriter sw=new StreamWriter("d:\abc.txt”,True); sw.Write("It is a example"); sw.WriteLine("of StreamWriter");}

Page 20: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

204.3 文件与 IO 流

( 2 ) BinaryWriter 类。 除了 StreamWriter 类外, System.IO 还提供了 BinaryWriter 类,它以二进制形式将基元类型写入流。例如:

Public void WriteText( ){ BinaryWriter bw = new BinaryWriter(File.Open("bw.bin",Filemode.Create)); bw.Write("Hello World"); bw.Close( );}

Page 21: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

214.3 文件与 IO 流

3 .文件的读取( 1 ) StreamReader 类。 StreamReader 类是用来读取文本文件的类,它提供了许多用于读取和浏览数据的方法。下面介绍其常用的方法。

① Close( ) Close( ) 方法用于关闭 StreamReader 对象和基础流,释放读取器占用的所有系统资源。

② Read( ) Read( ) 方法用于读入文本流中的下一个字符并移动文件指针。

③ ReadLine( ) ReadLine( ) 方法用于从文本流中读入一行字符,并将数据作为字符串返回。

④ ReadToEnd( ) ReadToEnd( ) 方法用于读取文本流中从当前位置到末尾的所有内容,并将读到的数据作为字符串返回。

( 2 ) BinaryReader 类 除了 StreamReader 类外, System.IO 还提供了 BinaryReader 类,用于按二进制读取文件。

Page 22: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

224.4 Windows 程序设计基础

窗体的常用属性

属 性 说 明

Name 设置控件的名称AcceptButton 设置当用户按 Enter 键时所单击的窗体上的按钮

ActiveMdiChild 获取当前活动的多文档界面( MDI )子窗体BackgroudImage 设置在控件中显示的背景图像

CancelButton 设置当用户按 Esc 键时所单击的窗体上的按钮ContextMenu 设置与控件关联的快捷菜单

Cursor 设置当鼠标指针位于控件上时显示的光标HelpButton 设置是否在窗体的标题栏中显示“帮助”按钮

Icon 设置窗体的显示图标IsMdiChild 设置窗体是否为多文档界面( MDI )子窗体

IsMdiContainer 设置窗体是否为多文档界面( MDI )子窗体的容器MaximizeBox 设置是否在窗体的标题栏中显示最大化按钮MinimumSize 设置是否在窗体的标题栏中显示最小化按钮

Text 设置窗体显示的标题

4.4.1 创建简单的 WinForm程序

Page 23: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

234.4 Windows 程序设计基础4.4.2 Windows窗体应用程序模型

Windows窗体的应用程序编程模型主要由窗体、控件及其事件组成。1 .窗体 在 Windows窗体中, Form 类是在应用程序中显示的任何窗口的表示形式。当为应用程序设计用户界面时,首先创建一个从 Form派生的类。然后添加控件、设置属性、创建事件处理程序以及向窗体添加编程逻辑。2 .控件 添加到窗体中的每个组件(如 Button 、 TextBox 或 RadioButton )称为控件。 Windows窗体通常包括与 Windows 关联的所有控件以及类似 Windows窗体 DataGridView 的自定义控件。3 .事件 Windows窗体编程模型基于事件。

Page 24: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

244.4 Windows 程序设计基础

4.4.3 WinForm 常用控件

1. 标签控件( Label ) Label控件为控件提供运行时信息或说明性文字,通常用于显示静态文本,是 WinForm 中最基本的控件。 标签控件的常用属性

属 性 作 用

Name 给标签对象命名Text 设置标签对象中显示的文字

AutoSize 设置标签对象能否自动调整大小Enabled 设置标签对象能否启用Visible 设置标签对象是否可见Image 设置标签对象上显示的图像

除了常规的标签控件外, .NET 框架还提供了一种新型的标签控件 LinkLabel ,它由 Label 类派生,因此具有标签控件所有的属性、事件和方法。 LinkLabel控件使用户能向 Windows窗体程序中添加 Web样式的链接。

一、常用控件

Page 25: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

254.4 Windows 程序设计基础

2. 文本框控件( TextBox ) 文本框控件通常用于接收用户的输入或者显示文本。

文本框的常用属性

属 性 作 用

AcceptsReturn 设置文本框对象是否允许输入回车符Maxlength 设置文本框中能输入的最大字符数Multiline 设置文本框中能否输入多行文本

PasswordChar设置文本框中显示的字符不是实际输入的文本(当用户输入的数据需要保密时,设置此项)

ReadOnly 设置文本框中的内容能否被修改TextAlign 设置文本框中文本的对齐方式Scrollbars 设置是否在多行文本框中显示滚动条

Page 26: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

264.4 Windows 程序设计基础

文本框的常用方法

方 法 作 用

AppendText 在当前文本框显示的文本末尾添加文本Clear 清空当前文本框Copy 将文本框中选定文本复制到剪贴板Cut 将文本框中选定文本删除,并移至剪贴板

Paste 用剪贴板中的内容替换文本框中选定的文本Select 在文本框中选定指定范围的文本Undo 撤消文本框中最后一次修改操作

文本框最常用的事件是 TextChanged事件,当文本框中的内容发生改变时,触发该事件。

Page 27: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

274.4 Windows 程序设计基础

3.列表框控件( ListBox )列表框控件通常用于显示供用户选择的选项列表,用户可以从中选

择一项或多项。

属 性 作 用

Items 表示列表框中的各个选项SelectedItem 表示当前选中的项SelectedItems 表示当前选中的所有项SelectedValue 表示当前选中项的值SelectedIndex 表示当前选中项的索引号

Text 表示当前选中项的文本MultiColumn 设置列表框是否能多列显示

SelectionMode 设置一次选择列表项的数目Sorted 设置是否对列表框中的各项进行排序

列表框的常用属性

Page 28: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

284.4 Windows 程序设计基础

列表框的常用方法

方 法 作 用

FindingString 在列表框中查找以指定字符串开始的第一项

GetSelected 是否选中指定项

SetSelected 选择或取消选定的项

组合框控件( ComboBox )结合了文本框控件和列表框控件的功能,同时具有这两类控件的功能,能够执行大部分文本框和列表框所具有的操作。

列表框常用的事件:SelectedIndexChanged事件和 SelectedValueChanged事件。

Page 29: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

294.4 Windows 程序设计基础

4.命令按钮控件( Button ) 命令按钮控件允许用户通过单击来响应各种操作,当单击 Button控件时,即调用了它的 Click事件。

命令按钮的常用属性

属 性 作 用

Text 设置命令按钮控件中显示的文本TextAlign 设置命令按钮控件中文本的对齐方式Imagelist 设置命令按钮控件中显示的图像

命令按钮最常用的事件是 Click事件。

Page 30: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

304.4 Windows 程序设计基础二、容器控件

1.FlowLayoutPanel控件 FlowLayoutPanel控件主要用来排列该容器控件中包含的控件对象。

FlowLayoutPanel控件的常用属性

属 性 作 用

FlowDirection 设置该控件布局的方向WrapContents 设置该控件是换行还是剪裁包含的控件对象

AutoSize 设置自动调整大小,容纳其包含的控件对象

FlowLayoutPanel控件最常用的事件是 Layout事件。

Page 31: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

314.4 Windows 程序设计基础

Panel控件用于对控件集合分组。利用 Panel控件可以按功能细分窗体,当移动 Panel控件时, Panel控件里面包含的控件对象也一起移动。

Panel控件的常用属性

属 性 作 用

AutoScroll设置当控件内容超过它的可见区域时,是否显示滚动条

BackColor 设置控件的背景色BackgroundImage 设置控件的背景图像BorderStyle 设置控件的边框样式

Panel控件常用事件是 Layout事件。

2.Panel控件

Page 32: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

324.4 Windows 程序设计基础3.GroupBox控件GroupBox控件用于在一组控件周围显示带有标题的框架。同样当移

动 GroupBox控件时, GroupBox控件里面包含的控件也一起移动。GroupBox控件的常用属性

属 性 作 用FlatStyle 设置控件平面外观样式Text 设置控件框架显示的文本

4.TabControl控件TabControl控件用于显示多个选项卡,以创建一组相关属性的属性页。TabControl控件的常用属性

属 性 作 用

ItemSize 设置控件选项卡的大小Multiline 设置控件能否多行显示SelectedIndex 查看 TabControl控件中选定的选项卡页的索引SelectedTab 查看 TabControl控件中选定的选项卡页TabPages 查看 TabControl控件中选项卡页的集合

Page 33: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

334.4 Windows 程序设计基础 三、通用对话框控件

1.消息对话框( MessageBox ) 消息对话框( MessageBox )通常用于向用户显示一些提示、警告信息。用户不能创建 MessageBox 类的实例,而只能通过它的静态成员来显示消息对话框。 若要显示消息对话框,通常是调用类 MessageBox 的静态方法 Show 。在调用 Show 方法时,除了需要指定在消息对话框中出现的文本和消息对话框的标题外,还可以通过 MessageBoxIcon 和 MessageBoxButton 类来指定在消息对话框中出现的图标和按钮类型。MessageBoxIcon 的枚举成员

枚举成员 说 明Asterisk 显示提示图标Error 显示错误图标Exclamation 显示警告图标Hand 显示指示图标Information 显示提示图标Question 显示问题图标Stop 显示停止图标Warning 显示警告图标

Page 34: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

344.4 Windows 程序设计基础MessageBoxButton 的枚举成员

AbortRetryIgnore 显示终止、重试和忽略按钮OK 显示确定按钮OKCancel 显示确定、取消按钮RetryCancel 显示重试、取消按钮YesNo 显示是、否按钮YesNoCancel 显示是、否、取消按钮

MessageBox.Show(" 这是一个包含警告图标和确定、取消按钮的消息框 ","消息框示例 ",MessageBoxButtons.OKCancel,MessageBoxIcon.Exclamation);

例如:

Page 35: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

354.4 Windows 程序设计基础

文件对话框通常用来打开文件和保存文件,其中打开文件对话框是用类 OpenFileDialog 表示,保存文件对话框是用类 SaveFileDialog 表示,这两个类都从 FileDialog 类派生,它们的使用方法也基本相同。

2. 文件对话框

OpenFileDialog 的常用属性

属 性 作 用AddExtension 设置如果用户缺省扩展名,对话框是否自动在文件名后添加扩展名CheckFileExists 设置如果用户指定的文件名不存在,是否显示警告CheckPathExists 设置如果用户指定的路径不存在,是否显示警告DefaultExt 设置默认的文件扩展名FileName 设置在文件对话框中选定的文件名FileNames 设置在文件对话框中选定的所有文件名Filter 设置文件对话框中“文件类型”框中可供选择的各种文件类型

FilterIndex设置文件对话框中“文件类型”框中可供选择的各种文件类型的索

Page 36: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

364.4 Windows 程序设计基础

InitialDirectory 设置文件对话框中显示的初始目录

Multiselect 设置对话框是否允许选择多个文件ReadOnlyChecked 设置对话框中是否选定只读复选框RestoreDirectory 设置对话框在关闭前是否还原当前目录ShowHelp 设置对话框中是否包含“帮助”按钮ShowReadOnly 设置对话框中是否包含只读复选框Title 设置对话框的标题

续上表

OpenFileDialog 对话框的常用方法

方 法 作 用

OpenFile 以只读方式打开用户选择的文件ShowDialog 显示 OpenFileDialog

Page 37: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

374.4 Windows 程序设计基础

3.颜色对话框( ColorDialog )ColorDialog控件用于显示选择颜色的对话框,其常用属性如表 4.21 所

示。

ColorDialog控件的常用属性 属 性 作 用

AllowFullOpen 设置用户是否可以使用该对话框的自定义颜色AnyColor 设置对话框是否显示基本颜色集Color 获取或设置用户选定的颜色CustomColors 获取或设置对话框中显示的自定义颜色集

FullOpen指定用于创建自定义颜色的控件在对话框打开时是否可见

Page 38: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

384.4 Windows 程序设计基础

4. 字体对话框( FontDialog )FontDialog 对话框用于显示选择字体的对话框。

FontDialog 对话框的常用属性 属 性 作 用

ScriptsOnly设置字体对话框中是否允许为所有非 OEM 和 Symbol字符集以及 ANSI 字符集选取字体

ShowApply “ ”设置对话框是否包含 应用 按钮ShowColor 设置对话框是否显示颜色选择

ShowEffects设置对话框是否包含删除线、下划线和文本颜色选项等格式

Page 39: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

394.4 Windows 程序设计基础

4.4.4 Visual C# 的菜单设计与编程

菜单是可视化编程的重要组成部分,在开发Windows 应用程序时,菜单是组织大量数据最常用的方法。菜单通常分为下拉菜单(包括主菜单和子菜单)和快捷菜单两种。 主菜单:显示在菜单栏上、窗体运行时始终显示的菜单。 子菜单:主菜单下面的菜单。 快捷菜单:单击鼠标右键弹出的菜单。 其中下拉菜单使用类 MenuStrip 创建,快捷菜单使用类 ContextMenuStri

p 创建。两者设计完全相同。

Page 40: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

404.4 Windows 程序设计基础

MDI ( Multiple-Document Interface )即多文档界面,由一个父窗体和多个子窗体组成。 MDI窗体允许同时打开多个子窗体,是一种能够同时处理两个或两个以上窗体的界面形式。创建 MDI窗体主要包括以下步骤: 1 ) MDI父窗体的创建 2 ) MDI 子窗体的创建 3 )从父窗体中调用子窗体。

4.4.5 Visual C# 中的 MDI编程

Page 41: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

414.5 数据库编程基础4.5.1 ADO.NET概述

ADO.NET由 ADO发展而来,具有与 ADO 相似的编程方式,是 .NE

T 提供的一组专门用于存取数据的类。 ADO.NET 最重要的新特性是:以断开连接的方式访问数据源以及使用标准的 XML 格式来保存和传输数据,它比 ADO 具有更好的互操作性、可维护性和可扩展性。

ADO.NET 的体系结构图:

ADO.NET 主要由两部分构成:一部分是 .NET 数据提供程序( Data Provider ),这部分是与数据库直接相连的联机对象,通过该类对象,可以在应用程序内完成连接数据源以及数据维护等相关操作;一部分是数据集( DataSet ),这部分是与数据源无关的断开对象,是断开连接访问方式的核心组件。

Page 42: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

424.5 数据库编程基础4.5.2 ADO.NET 的数据访问对象 1 . Connection 对象 要访问数据库,首先要建立与数据库的连接, ADO.NET 提供了与数据源连接的对象,包括 SqlConnection 、 OleDbConnection 、 OdbcConnection 等。

1 ) SqlConnection 类 SqlConnection 类用来建立到 SQL Server 数据库的连接,它位于 Syste

m.Data.SqlClient命名空间中。使用 SqlConnection 类首先要创建对象实例,然后通过设置 SqlConnection 对象的连接字符串( ConnectionString )属性来选择连接字符串。

属 性 作 用

Connect Timeout尝试连接数据库的时间长短,如果超过这个时间还未连接上,数据库将会产生错误

Data Source (或 Server ) 要连接的 SQL Server服务器的名称或网络地址

DataBase (或 Initial Catalog ) 被访问的数据库的名称

Pwd 登录 SQL Server 所用账号的密码(用户密码)User ID 登录 SQL Server 的账号(用户名称)

常用的连接属性:

Page 43: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

434.5 数据库编程基础SqlConnection 类的常用方法

① Open( )

Open( ) 方法用于打开数据库连接,如果存在可用的数据连接,则 Sql

Connection会直接使用它,如果没有,则 SqlConnection会创建一个新的连接。

② Close( )

Close( ) 方法用于关闭打开的数据库连接。调用 Open( ) 方法打开数据连接之后,数据库将一直处于打开状态,因此,必须调用 Close( ) 方法或 Dispose( ) 方法来关闭数据连接。

③ ChangeDatabase( )

ChangeDatabase( ) 方法用于改变建立连接的数据库。例如:SqlConnection1.ChangeDatabase("pubs");

④ BeginTransaction( )

BeginTransaction( ) 方法用于开始一个事务。例如: sqlConnection1.Open( ) ; sqlTransaction tran = sqlConnection1.BeginTransaction( ) ;

Page 44: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

444.5 数据库编程基础

① 创建 SqlConnection 对象。② 将连接字符串赋值给 SqlConnection 对象的 ConnectionString属性。③ 调用 SqlConnection 对象的 Open 方法打开连接。④ 连接完毕后,调用 SqlConnection 对象的 Close 方法关闭连接。⑤ 调用 SqlConnection 对象的 Dispose 方法释放其占用的资源。

利用 SqlConnection 类,建立 SQL Server 数据库连接的一般步骤如下:

2 ) OleDbConnection 类 OleDbConnection 类表示到 OLE DB 数据源的连接,它位于命名空间 System.Data.OleDb 中。使用 OleDbConnection 类首先要创建 Ol

eDbConnection 对象实例,然后通过设置 OleDbConnection 对象的连接字符串( ConnectionString )属性来选择连接字符串,其设置方法与 SqlConnection 对象完全相同。

Page 45: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

454.5 数据库编程基础2 . Command 对象 使用 Connection 对象与数据源建立连接之后,可以使用 Command对象来对数据源执行查询、添加、删除和修改等操作。 .NET 提供了两种数据命令类: SqlCommand 类和 OleDbCommand 类, SqlCommand 类专用于 SQL Server 数据库,而 OleDbCommand 用于所有 OLE DB 数据源。

1 ) SqlCommand 类SqlCommand 类表示将在 SQL Server 中执行的 SQL语句或存储过程,它

位于命名空间 System.Data.SqlClient 中。

属 性 作 用CommandText 设置对数据源执行的 SQL语句或存储过程CommandTimeout 终止执行命令尝试并生成错误之前的等待时间CommandType 指定如何解释 CommandText属性Parameters 获取 SqlParameterCollection 对象Transaction 设置将在其中执行 SqlCommand 类的 SqlTransaction 对象

SqlCommand 类的常用属性

Page 46: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

464.5 数据库编程基础SqlCommand 类的常用方法

① ExecuteReader( )ExecuteReader( ) 方法将 CommandText属性发送给 Connection 对象并生成一个 SqlDataReader 对象。 ② ExecuteNonQuery( )在执行不返回结果的数据库操作时,可以使用 SqlCommand 对象的 ExecuteNonQuery( ) 方法,该方法在 SqlCommand 对象所关联的数据库连接上执行 Transact-SQL语句并返回语句所影响的行数。

③ ExecuteScalar( )ExecuteScalar( ) 方法用于执行命令中的查询语句,并返回结果集中的第一行的第一列,其他的列和行都将被忽略。

2 ) OleDbCommand 类 OleDbCommand 类表示在 OLE DB 数据源上执行的 SQL语句或存储过程,它包含的属性和方法与 SqlCommand 类完全相同,使用方式也完全相同。

Page 47: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

474.5 数据库编程基础

3 . DataReader 对象 DataReader 对象是一个简单的数据集,用于从数据源中检索只读数据集。 .NET 提供了两种类: SqlDataReader 类和 OleDbDataReader 类。这两个类除了用于不同的数据源( SqlDataReader 用于 SQL , OleDbDataR

eader 用于所有的 OLE DB 数据源),其他的方面完全相同。 一般情况下,不需要直接创建 SqlDataReader 对象或 OleDbDataReade

r 对象,而是通过调用 SqlCommand 对象或 OleDbCommand 对象的 Exec

uteReader 方法从数据源中检索数据来创建。

DataReader 对象的常用属性 属 性 作 用

FieldCount 表示当前行中的列数IsClosed 判断 SqlDataReader 对象是否已经被关闭RecordsAffected 表示执行 SQL语句所更改、添加或删除的行数

Page 48: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

484.5 数据库编程基础

① Close( )

Close( ) 方法用于关闭 SqlDataReader 对象。在使用完 SqlDataReade

r 对象之后,必须调用这个方法来关闭它,以使数据库连接能够用于其他操作。

② Read( )

Read( ) 方法使 SqlDataReader 对象移到下一条记录上。 SqlDataRea

der 对象的默认位置是第一条记录之前,因此在访问数据之前,必须先调用它的 Read( ) 方法,如果该方法返回 True ,说明后面还有记录存在,反之,说明已经到达结果记录集的末尾。

SqlDataReader 对象常用方法

Page 49: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

494.5 数据库编程基础

4 . DataSet 对象 DataSet (数据集)是 ADO.NET 体系结构中的核心部分, ADO.NE

T 的断开式、分布式数据方案正是通过它来实现的。 DataSet 主要用作一个非连接的数据缓存,从数据源中检索的数据都暂存在这个缓存中,供程序的其他部分使用。 DataSet (数据集)独立于数据源,它的结构和关系数据库相似,主要体现为以下两大部分。1 ) DataTableCollection

DataTableCollection 是由多个 DataTable 对象表示的表的集合。 Data

Table 对象表示内存驻留数据的单个表,由 DataColumnCollection 类表示的列集合和 ConstraintCollection 类表示的约束集合共同构成。2 ) DataRelationCollection

DataSet (数据集)中,不仅包含多个 DataTable ,还包含这些 DataT

able之间的关系。表之间的关系由类 DataRelation 表示,它使一个 Data

Table 对象中的行和另一个 DataTable 对象中的行相关联,即表示了两个表之间的一种父子关系,类似于关系数据库中主码和外码之间的联接。

Page 50: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

504.5 数据库编程基础DataSet 对象的常用属性:

属 性 作 用DataSetName 设置当前 DataSet 对象的名称ExtendedProperties 表示与 DataSet 对象相关的自定义用户信息的集合Namespace 设置 DataSet 类的命名空间Relations 表示将表连接起来并允许从父表浏览子表的关系的集合Tables 表示包含在 DataSet 对象中表的集合

① ReadXml( ) ReadXml( ) 方法主要用于使用指定的文件将 XML 架构和数据读入 DataSet 对象。

② GetXml( ) GetXml( ) 方法用于将 DataSet (数据集)中的数据以 XML 文件形式显示给用户。③ Clear( ) Clear( ) 方法用于清除所有表中的所有行的 DataSet 对象。

DataSet 对象的常用方法:

Page 51: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

514.5 数据库编程基础

5 . DataAdapter 对象 DataAdapter 是 DataSet 数据集和数据源之间的桥梁,用于在 DataSet 和数据源之间交换数据。 .NET 提供了两类适配器: SqlDataAdapter (用于访问 SQL Server 数据库)和 OleDbDataAdapter (用于访问任何 OLE DB数据源)SqlDataAdapter 对象的常用属性:

属 性 作 用

SelectCommand 对应 SELECT语句,用于从数据源中选择记录

UpdateCommand 对应 UPDATE语句,用于更新数据源中的记录

InsertCommand 对应 INSERT语句,用于向数据源中插入新记录

DeleteCommand 对应 DELETE语句,用于从数据源中删除记录

TableMappings 用于在数据源的列和数据集表中的列之间建立对应关系

MissingMappingAction指定 TableMappings属性中缺少表或列时采取的措施( E

rror 、 Ignore 、 Passthrough )

MissingSchemaAction指定当数据集中缺少表或列时采取的措施( Add 、 Add

WithKey 、 Error 、 Ignore )

Page 52: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

524.5 数据库编程基础

① Fill( )

Fill( ) 方法执行 SqlDataAdapter 对象 SelectCommand属性中的查询语句,从数据源中检索记录,然后使用检索结果更新数据集中的DataTable ,如果 DataTable 不存在,则创建新的 DataTable 。

② Update( )

Update( ) 方法调用 UpdateCommand 、 InsertCommand DeleteCom

mand属性中的查询语句,并用数据集中的数据更新数据源。

SqlDataAdapter 的常用方法:

Page 53: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

534.5 数据库编程基础4.5.3 ADO.NET访问常用数据库

1 .建立数据库连接

private void btnConn_Click(object sender, EventArgs e){ // 建立连接 SqlConnection con = new SqlConnection("server=.;database=usersDB;uid=sa;pwd=;"); Con.Open( ) if (con.State.ToString( )=="Open") { this.lblConnShow.Text = " 数据库连接成功! "; } }

Page 54: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

544.5 数据库编程基础2 .向数据库中添加数据

private void bind( ) {// 创建连接 server=. 表示连接到本地, database=usersDB 指定数据库

的名字, uid=sa;pwd=; 指定用户名及密码 SqlConnection con = new SqlConnection("server=.;database=usersDB;uid=

sa;pwd=;"); // 创建数据适配器对象,用于装载其查询内容至数据集。 SqlDataAdapter sda = new SqlDataAdapter("select * from usersTB order by userID desc", con); // 创建新的数据集 DataSet ds = new DataSet( ); // 装载 sda.Fill(ds, "allUsers"); // 指定 dataGridView 对象的数据源 this.dataGridView1.DataSource = ds.Tables["allUsers"]; }

Page 55: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

554.5 数据库编程基础

private void btnAdd_Click(object sender, EventArgs e) { string name = this.txtUserName.Text.ToString( ); string pwd = this.txtUserPwd.Text.ToString( ); // 建立连接并打开 SqlConnection con = new SqlConnection("server=.;database=usersDB;ui

d=sa;pwd=;"); con.Open( ); // 向数据库表中添加新数据 SqlCommand cmd =new SqlCommand("insert into usersTB values('"+na

me+"','"+pwd+"')", con); //执行更新 cmd.ExecuteNonQuery( ); // 重新绑定 this.bind( ); this.label3.Text = " 添加数据成功 "; } }}

Page 56: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

564.5 数据库编程基础3 .修改数据库中的数据

private void btnUpdate _Click(object sender, EventArgs e){ string updatePwd = this.txtUpdatePwd.Text.ToString( ); SqlConnection con = new SqlConnection("server=.;database=usersDB;uid=sa; pwd=;"); con.Open( ); //修改数据库表中的数据 SqlCommand cmd = new SqlCommand("update usersTB set userPwd='"+ updatePwd+"'where userName='userA'", con); //执行修改 cmd.ExecuteNonQuery( ); // 重新绑定 this.bind( ); this.label2.Text = "修改数据成功 ";}

Page 57: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

574.5 数据库编程基础

4 .删除数据库中的数据

private void btnDelete_Click(object sender, EventArgs e){ SqlConnection con = new SqlConnection("server=.;database=usersDB;uid=sa;pwd=;"); con.Open( ); SqlCommand cmd = new SqlCommand("delete from usersTB where userName='userA'", con); //执行删除 cmd.ExecuteNonQuery( ); // 重新绑定 this.bind( ); this.label1.Text = " 删除数据成功 "; }

Page 58: C# 网络编程技术教程

第4

章 C#

常用数据类与W

indows

584.5 数据库编程基础

5 .查询数据库中的数据

private void button1_Click(object sender, EventArgs e) { SqlConnection con = new SqlConnection("server=.;database=usersDB;uid=sa;pwd=;"); SqlDataAdapter sda = new SqlDataAdapter("select * from usersTB where userName='userD'", con); DataSet ds = new DataSet( ); sda.Fill(ds, "allUsers"); this.dataGridView1.DataSource = ds.Tables["allUsers"]; }