C#可视化程序设计笔记

一、初识类和对象

1.类与对象

数据抽象是找出需要操作的数据,而行为抽象则指如何对这些数据进行操作

对象是类的一个实例

2.C#类定义

[访问修饰符] class 类名{

        类的字段声明;    public string name;

        类的属性声明;

        类的方法声明;    [访问修饰符] 返回值类型 方法名称(参数列表){

                                       方法体; 

                                   }

}

3.实例化对象

类名 对象名=new 类名()

4.访问类的字段

对象名.字段名

5.调用类的方法

对象名.方法名(参数)

6.命名空间

6.1自定义命名空间

namespace name{

        type-declarations(类型定义语句)

}

可嵌套使用 

6.2常用的系统命名空间

System 根命名空间,提供最基本的操作

System.Date 处理数据存取和管理

System.IO 管理对文件、流的同步和异步访问

System.Windows 可视化编程中基于窗体的处理

System.Collections 包含对集合进行处理的接口和类

6.3命名空间的使用

两个放置于不同命名空间的类,如需相互操作,则

a:导入命名空间来访问

        using Demo1;

b:完全限定名访问 在指定类时带上完整的命名空间

Demo1.item di=new Demo1.item();

二、、ADO.NET基础

1.ADO.NET

是在.NET Framework中负责数据访问的类库集,具有跨平台性和良好的交互性

1.1ADO.NET体系结构

用于访问和操作数据库的两个主要组件是.NET Framework数据提供程序和数据集DataSet

                                   .NET Framework数据提供程序
.NET Framework数据提供程序 说明
SQL Server .NET Framework数据提供程序 提供对Microsoft SQL Server中数据的访问,使用System.Date.SqlClient命名空间
OLE DB .NET Framework数据提供程序 提供对使用OLE DB公开的数据源(如Access Excel等)中数据的访问,使用System.Date.oleDb命名空间
ODBC .NET Framework数据提供程序 提供对使用ODBC公开的数据源中数据的访问,使用System.Data.Odbc命名空间
                          C.NET Framework数据提供程序的核心对象
对象 说明
Connection 建立与特定数据源的连接
Command 对数据源执行命令
DataReader 从数据源中读取只进只读的数据流
DataAdapter 使用数据源填空DataSet并支持更新

 注:

SQL Server数据库{命名空间System.Date.SqlClient

                              核心对象{SqlConnection

                                                SqlCommand

                                                SqlDataReader

                                                SqlDataAdapter

                               }

}

Access数据库{命名空间System.Date.Oledb

                              核心对象{OleDbConnection

                                                OleDbCommand

                                                OleDbDataReader

                                                OleDbDataAdapter

                               }

}

1.2ADO.NET操作数据库的方式

非断开式访问:在整个操作过程中需要保持数据库连接

断开式访问:只需要在执行数据库命令时保持数据库连接

1.2.1使用Connection对象、Command对象、DataReader对象实现非断开式访问

1.2.1.1对数据库进行更改(Insert、Update、Delete)或执行聚合函数

a:创建数据库连接对象Connection,并打开连接

b:创建命令对象Command

c:执行相应的SQL命令(Insert、Update、Delete或聚合函数)

d:关闭数据库连接

1.2.1.2查询数据库(select)

a:创建数据库连接对象Connection,并打开连接

b:创建命令对象Command

c:执行select查询命令,获取DataReader对象

d:使用while循环读取DataReader中的数据

e:关闭DataReader对象

f:关闭数据库连接

1.2.2使用Connection对象、DataReader对象、DataSet对象实现断开式访问

a:创建数据库连接对象Connection

b:创建数据库适配对象DataAdapter,指定select命令和Connection对象

c:创建数据集DataSet对象,用于在内存中缓存数据

d:使用DataAdapter对象将查询到的数据填充至DataSet数据集中

e:更新DataSet中的数据

f:使用DataAdapter对象将DataSet对象中的数据回传至数据库中

2.Connection对象

用于连接数据库,使用微软的SqlServer数据库,需导入System.Date.SqlClient命名空间,创建SqlConnection对象

                                       Connection对象的常用属性
属性 说明
ConnectionString 用于连接数据库的连接字符串
State 用于指示连接对象的状态,枚举类型
                                  ConnectionState枚举值及说明
枚举值 说明
Broken 与数据库的连接中断,可以先关闭连接后再打开
Closed 数据库连接处于关闭状态
Connecting 连接对象正在与数据库进行连接
Executing 连接对象正在执行命令
Fetching 连接对象正在检索数据
Open 数据库连接处于打开状态
                                      Connection对象的常用方法
方法 说明
Open() 打开数据库连接
Close() 关闭

使用Connection对象连接数据库 

a:设置连接字符串

SQL Server身份验证连接字符串

server=服务器名;database=数据库名;uid=用户名;pwd=密码;

Windows身份验证连接字符串

server=服务器名;database=数据库名;Integrated Security=true;

b:导入命名空间

using System.Data;

using System.Data.SqlClient;

c:创建Connection对象

SqlConnection 连接对象名=new SqlConnection("连接字符串");

d:打开连接

连接对象名.Open();

e:关闭连接

连接对象名.Close();

3.Command对象

                                         Command对象常用属性
属性 说明
CommandText 获取或设置对数据库执行的T-SQL命令
Connection 获取或设置连接数据库的Connection对象
                                       Command对象的常用方法
方法 说明
ExecuteNonQuery 执行T-SQL语句,并返回受影响的行数(增删改)
ExecuteReader 执行查询命令,并返回DataReader对象(查询)
ExecuteScalar 执行查询命令,并返回结果集中首行首列的值(聚合函数)

 使用Command对象执行命令

a:创建Connection对象

b:打开数据库连接

c:定义需要执行的增删改SQL语句,存入字符串变量

d:创建Command对象

SqlConnection 命令对象名=new SqlConnection("SQL语句",Connection对象);

e:执行SQL语句,返回受影响行数

int 受影响的行数=命令对象名.ExecuteNonQuery();

f:关闭连接

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;
namespace Demo2
{
    //2.3Command对象
    internal class Program
    {
        static void Main(string[] args)
        {
            //1.建立连接
            string connStr = "server=.;database=3CDB;Integrated Security=true";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            string sqlStr = null;
            if (conn.State == ConnectionState.Open)
            {
                //2.显示操作界面
                showMessage();
                //3.接受用户的操作输入
                Console.WriteLine("请输入你选择的功能序号");
                string inputStr=Console.ReadLine();
                //4.根据用户不同的输入选择不同sql
                switch (inputStr)
                {
                    case "1":
                        Console.WriteLine("请输入新增管理员账号");
                        string uid=Console.ReadLine();
                        Console.WriteLine("请输入新增管理员密码");
                        string pwd = Console.ReadLine();
                        Console.WriteLine("请输入新增管理员用户名");
                        string uName = Console.ReadLine();
                        sqlStr =string.Format( "insert into Admins values('{0}','{1}','{2}')\r\n",
                            uid,pwd,uName);
                        break;
                    case "2":
                        Console.WriteLine("请输入要修改的管理员账号");
                        uid = Console.ReadLine();
                        Console.WriteLine("请输入管理员旧密码");
                        pwd = Console.ReadLine();
                        Console.WriteLine("请输入管理员新密码");
                        string newPwd = Console.ReadLine();
                        sqlStr = string.Format("update Admins set LoginPwd='{0}' where LoginId='{1}' and LoginPwd='{2}'\r\n",
                            newPwd,uid,pwd);
                        break;
                    case "3":
                        Console.WriteLine("请输入要删除的管理员账号");
                        uid = Console.ReadLine();
                        Console.WriteLine("请输入要删除管理员密码");
                        pwd = Console.ReadLine();
                        sqlStr =string.Format ("delete from Admins where LoginId='{0}' and LoginPwd='{1}' ",
                            uid,pwd);
                        break;
                    default:
                        Console.WriteLine("输入有误");
                        break;
                }
            }

            //5.执行sql
            SqlCommand cmd = new SqlCommand(sqlStr,conn);
            int rs=cmd.ExecuteNonQuery();
            if (rs > 0) {
                Console.WriteLine("执行成功");
            }
            //6.关闭连接
            conn.Close();
        }

        private static void showMessage()
        {
            Console.WriteLine("+------------------------+");
            Console.WriteLine("+1.新增管理员            +");
            Console.WriteLine("+2.修改管理员密码        +");
            Console.WriteLine("+3.删除管理员            +");
            Console.WriteLine("+------------------------+");
        }
    }
}

4.DataReader对象

                                      DataReader对象的常用属性
属性 说明
FieldCount 获取每行数据的列数
HasRows 指示查询结果中是否还存在未读取的数据,Bool类型
                                   DataReader对象的常用方法
方法 说明
Read 使DataReader前进到下一条记录,如果下一条有记录,则返回true,否则false
Close 关闭DataReader对象
GetName 获取指定列的名称

4.1 使用DataReader对象读取查询结果

a:创建数据库连接对象并打开

b:定义用于查询的SQL语句

c:创建命令对象Command

d:执行SQL命令,返回DataReader对象

SqlDataReader 数据读取对象=命令对象.ExecuteReader();

e:使用循环,逐行读取数据

while(数据读取对象.Read()){

        Object 某列的值=数据读取对象["索引或列名"];

}

f:关闭DataReader对象

数据读取对象.Close();

g:关闭连接对象 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace Demo3
{
    //2.4 DataReader对象  查询
    internal class Program
    {
        static void Main(string[] args)
        {
            //1:连接数据库
            string connStr = "server=.;database=3CDB;uid=sa;pwd=123456";
            //2:打开数据库
            SqlConnection conn =new SqlConnection(connStr);
            //3:判断是否打开
            conn.Open();
            if (conn.State == ConnectionState.Open) {
                //4:sql
                string sqlStr = "select * from Admins";
                //5:创建命令对象
                SqlCommand cmd = new SqlCommand(sqlStr, conn);
                //6:执行
                SqlDataReader sqlDataReader= cmd.ExecuteReader();
                Console.WriteLine("编号\t账号\t密码\t姓名");
                Console.WriteLine("-------------------------------");
                //7:循环显示
                while (sqlDataReader.Read())
                {
                    string ID = sqlDataReader["ID"].ToString();
                    string loginId = sqlDataReader["LoginId"].ToString();
                    string pwd= sqlDataReader["LoginPwd"].ToString();
                    string uName = sqlDataReader["Name"].ToString();
                    Console.WriteLine("{0}\t{1}\t{2}\t{3}",ID,loginId,pwd,uName);
                }
                //8:关闭datareader
                sqlDataReader.Close();
            }
            //9:关闭连接 
            conn.Close();
        }
    }
}

4.2 使用Command对象执行聚合函数

a:创建数据库连接对象并打开

b:定义用于查询的SQL语句

c:创建命令对象Command

d:执行SQL命令,返回结果集的首行首列

Object 结果集中首行首列的值=命令对象.ExecuteScalar();

 e:关闭数据库

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.SqlClient;

namespace Demo4
{
    //2.4   查询--聚合函数
    //商品总个数、总金额、平均价格
    internal class Program
    {
        static void Main(string[] args)
        {
            //1.连接并打开数据库
            string connStr = "server=.;database=3CDB;uid=sa;pwd=123456";
            SqlConnection conn = new SqlConnection(connStr);
            conn.Open();
            if(conn.State== ConnectionState.Open)
            {
                //2.sql  
                string sumSql = "select SUM(Price*Stock) from Products ";
                string countSql = "select COUNT(*) from Products ";
                string avgSql = "select AVG(Price) from Products ";
                //3.创建命令对象
                SqlCommand sumcmd=new SqlCommand(sumSql, conn);
                SqlCommand countcmd = new SqlCommand(countSql, conn);
                SqlCommand avgcmd = new SqlCommand(avgSql, conn);

                string sumPrice=sumcmd.ExecuteScalar().ToString();
                string countProducts=countcmd.ExecuteScalar().ToString();
                string avgPrice=avgcmd.ExecuteScalar().ToString();
                //4.显示界面
                Console.WriteLine("XX科技公司产品统计如下:");
                Console.WriteLine("===================================");
                //5.渲染界面
                Console.WriteLine("产品总金额:"+sumPrice);
                Console.WriteLine("产品总数量:" + countProducts);
                Console.WriteLine("产品平均价格:" + avgPrice);
            }

            //6.关闭连接
            conn.Close();
        }
    }
}

三、异常处理与DBHelper类

1.字符串处理方法

                                            常用字符串处理方法
方法 说明
int IndexOf(string value) 获取指定的value字符串在当前字符串中第一个匹配项的索引,如果找到,返回它的索引,未找到返回-1
int LastIndexOf(string value) 获取指定的value字符串在当前字符串中最后一个匹配项的索引
string Join(string separator,string[] value) 在字符串数组value中的每个字符串用指定的分隔符separator连接,返回连接后的字符串
string[] Split(char separator) 用指定的分隔符separator分割字符串,返回分割后的字符串组成的数组
string SubString(int startIndex,int length) 从指定的位置startIndex开始检索长度为length的子字符串
string ToLower() 获得字符串的小写形式
string ToUpper() 获得字符串的大写形式
string Trim() 去掉字符串两端的空格

string的Format()方法 

string strResult=string.Format("格式字符串",参数列表);

string num=string.Format("{0}加上{1}等于{2}",3,5,3+5);

2.类的静态成员

2.1静态字段

指被关键字static修饰的字段    访问——类名.字段名

没有被static修饰的字段是实例字段  访问——对象名.字段名

class 类名{

        [访问修饰符] static 类型 字段名;

}

2.2静态方法

class 类名{

        [访问修饰符] static 返回值类型 方法名(类型 参数1,类型 参数2) {

                方法体

        }

}

访问——类名.方法名(参数) 

3.异常处理

try{

        //可能出现异常的代码

}catch(Exception e){

        //捕获到异常,进行异常处理的代码

}

try{

        //可能出现异常的代码

}catch(Exception e){

        //捕获到异常,进行异常处理的代码

}finally{

        //释放资源代码

}

try{

        //可能出现异常的代码

}

finally{

        //释放资源代码

}

4.DBHelper类

                                          DBHelper类中的字段
字段名 类型 是否公开 说明
ConnString string 是(public) 数据库连接字符串
Conn SqlConnection 否(private) 数据库连接对象
                                            DBHelper类中的方法
方法名 参数 返回值 是否公开 说明
InitConnection 无(viod) private 初始化连接,创建并打开连接
GetDataReader SQL字符串 SqlDataReader public 查询,获得DataReader对象
ExecuteNonQuery SQL 执行是否成功 public 执行增删改操作
ExecuteScalar SQL 结果(object) public 执行聚合函数

四、Windows窗体应用

1.创建Windows应用程序

Windows窗体应用(.NET Framework)

2.窗体常用属性

属性名 说明
Name 窗体对象的名字
BackColor 窗体的背景色
Icon 窗体的图标
BackgroundImage 窗体的背景图像BackgroundImageLayou:Zoom;铺满
FormBorderStyle

窗体显示的边框样式

默认值Sizable(可调整大小的边框)

Fixed3D(固定的三维边框)

FixedDialog(固定的对话框样式的粗边框)

FixedSingle(固定的单行边框)

FixedToolWindow(不可调整大小的工具窗体边框)

None(无边框)

SizableToolWindow(可调整大小的工具窗体边框)

MaximizeBox 确定窗体标题栏的右上角释放有最大化框,默认值true
ShowInTaskbar 确定窗体是否出现在windows任务栏中,默认值true
StartPosition

窗体第一次出现的位置

默认值WindowsDefaultLocation(定位在windows默认位置,其尺寸由Size属性决定)

Manual(由Location属性确定)

CenterScreen(屏幕内居中)

CenterParent(父窗体内居中)

WindowsDefaultBounds(windows默认位置,边界也由windows默认决定)

Text 窗体标题栏中显示的文本
TopMost 指示窗体是否始终显示在此属性未设置为True的所有窗体之上,默认为False
WindowState

确定窗体的初始可视状态

默认值Normal(窗体加载后的初始尺寸由Size属性决定)

Minimized(窗体加载后直接最小化到任务栏)

Maximized(窗体加载后直接最大化)

3.窗体常用事件

事件名 说明
Load 窗体加载事件,加载时发生
Click 窗体单击事件
DoubleClick 窗体双击事件
MouseMove 鼠标移动
KeyDown 键盘按下事件,在首次按下某个键时发生
KeyUp 键盘释放

4.显示消息框

MessageBox.Show(要显示的字符串);

MessageBox.Show(要显示的字符串,消息框的标题);

MessageBox.Show(要显示的字符串,消息框的标题,消息框按钮);

MessageBox.Show(要显示的字符串,消息框的标题,消息框按钮,消息框图标);

MessageBox.Show("确定要退出吗","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Information);

 是一种DialogResult(对话框返回值)类型,可以通过点运算符来获取其中的一种返回值,如DialogResult.OK是指用户单击了确定按钮

5.设置启动窗体

Application.Run(new Form2());

6.窗体间的相互调用

6.1模式窗口

Form1 form1=new Form1();

form1.ShowDialog();

6.2非模式窗口

显示时仍能操作其他窗体

Form1 form1=new Form1();

form1.Show();

6.3 隐藏关闭退出

隐藏:Hide()

关闭:Close()

退出:Application.Exit()

五、Windows基础控件

1.控件概述

1.1分类:文本、选择、分组、菜单、工具栏、状态栏

1.2对齐控件:菜单栏的格式命令

1.3Anchor(锚定)属性:设置控件相对于窗体的某个边缘距离保持不变

1.4Dock(停靠)属性:让控件始终保持在窗体的边缘或填充窗体

1.5锁定控件:Locked属性设置为True  右键——菜单栏“格式”命令

2.文本类控件

2.1标签控件Label

显示用户不能编辑的文本

命名:lblXXX

属性 说明
Text 设置或读取标签控件的文本
Visible 显示或隐藏标签控件

2.2文本框控件TextBox

用户输入的文本

命名:txtXXX

只读:ReadOnly属性为True

密码文本框:UseSystemPasswordChar属性为True   实心圆代替

多行文本框:Multiline属性为True

2.3按钮控件Button

命名:btnXXX

事件:Click

属性:BackgroundImage设置图像

        AcceptButton “接受”按钮 回车键

        CancelButton “取消”按钮 ESC

3.菜单、工具栏和状态栏

3.1菜单

MenuStrip(下拉式菜单)  快捷键输入方式——“(&快捷键)”

ContextMenuStrip(右键快捷菜单) ContextMenuStrip属性为该菜单

3.2工具栏 ToolStrip

右键“ToolStrip”控件——插入标准项

自定义命令按钮——右键{——设置图像

                                         ——DisplayStyle——ImageAndText显示文本和图像

3.3状态栏 StatusStrip

Text设置文本

4.选择类控件

4.1下拉组合框控件 ComboBox

命名:cmbXXX

                                         下拉样式DropDownStyle
属性值 说明
Simple 使ComboBox列表部分只是可见
DropDown(默认) 使用户可以编辑控件的文本框部分,单击箭头才显示列表
DropDownList 用户不可以编辑控件的文本框部分

双击触发SelectedIndexChange选项值更改事件 

4.2复选框控件 CheckBox

命名:cbXXX chkXXX

属性:Text属性  checked属性——是否选中

选中状态更改事件checkedChanged   双击

4.3单选按钮控件  RadioButton

命名:rbXXX

属性:Text属性  checked属性——是否选中

选中状态更改事件checkedChanged   双击

分组——使用Panel容器

六、Windows控件应用

1.多文档界面应用程序

1.1设置MDI父窗体

IsMdiContainer属性为True

1.2设置并显示子窗体

父窗体的Load事件

 Form1 form1=new Form1();

form1.Show();

form1.MdiParent=this;

1.3特点

1.3.1只能有一个MDI父窗体,可以打开多个MDI子窗体

1.3.2只能在父窗体内部区域活动

1.3.3关闭父窗体,将关闭所有打开的子窗体

1.4常用操作

1.4.1获取当前活动的子窗体——ActiveMdiChild属性  .Text获取标题

1.4.2LayouMdi()方法调整排列方式,将MdiLayout枚举值作为参数

this.LayoutMdi(MdiLayout.ArrangeIcons);排列所有MDI子窗口图标

Cascade层叠排列

TileHorizontal水平平铺

TileVertical垂直平铺

2.图片框PictureBox

命名:picXXX

属性 说明
Image 设置显示在图片框控件上的图像
ImageLocation 设置显示在图片框控件上的图像的路径
SizeMode

控制调整控件或图片的大小及放置位置

Normal置于PictureBox左上角,图像超出被裁剪

StretchImage图像被拉伸或收缩,以适应PictureBox的大小

AutoSize调整PictureBox的大小,等于包含的图片

CenterImage居中

Zoom铺满

picXXX. ImageLocation="图片路径";

picXXX. Image= Image.FromFile("图片路径");

3.计时器

3.1属性

Interval 事件发送的间隔(毫秒)

Enable是否启用(布尔)

3.2方法

Start()启动计时器

Stop()停止计时器

3.3事件

Tick定时间隔到自动引发的事件

4.图片集ImageList

命名:ilXXX

属性 说明
Images 存储在控件中的图像合集
ImageSize 图像集中图像的大小,最大值256*256
ColorDepth 图像集中图像的颜色深度

访问图像对象:ilXXX.Images[index];

添加图片:ilXXX.Images.Add(图像对象);

图片数量:ilXXX.Images.Count

七、Windows数据显示控件

1.数据集DataSet

类比于数据库

是ADO.NET的核心对象,支持ADO.NET断开式、分布式数据方案的核心对象,是创建在内存中的集合对象,类似于在内存中创建的一个小型数据库

1.1缺点:可能得到过时数据

1.2创建DataSet对象

DataSet类似于System.Data命名空间中,使用时必须引入该命名空间

DataSet 数据库对象=new DataSet("数据集名称");

DataSet myDataSet=new DataSet();

DataSet myDataSet=new DataSet("myDataSet");

属性:Tables 获取包含在DataSet中的表的集合

方法:Clear 清除DataSet中的数据

2.数据适配器DataAdapter

用于填充数据集DataSet和更新数据库,连接DataSet与数据库的桥梁

2.1属性

SelectCommand 用于从数据源中查询记录的Command对象

2.2方法

Fill() 向DataSet的数据表中填充数据
Update() 将DataSet中的数据返回到数据库中更新

2.3DataAdapter对象的使用

a:创建数据库连接对象

b:定义查询数据库的SQL命令

c:创建DataSet对象

d:创建DataAdapter对象

SqlDataAdapter dataAdapter对象=new SqlDataAdapter(SQL命令,数据库连接对象);

e:调用DataAdapter对象的Fill()方法填充DataSet对象

dataAdapter对象.Fill(数据集对象,需要填充的数据表的名称);

2.4访问DataSet中的数据

2.4.1访问DataSet对象中的DataTable对象

DataSet对象.Tables[表索引或表名];

2.4.2访问DataTable对象中的DataRow对象(某一行数据)

DataSet对象.Tables[表索引或表名].Rows[行索引];

2.4.3访问DataRow对象中某列的值

DataSet对象.Tables[表索引或表名].Rows[行索引][列索引或列名];

注意:

索引均从0开始

获取DataRow中某列的值时,其值是Object对象,需显示类型转换 

DataTable dt=ds.Table[0];
textBox.Text=Convert.ToString(dt.Rows[index]["Name"]);
textBox.Text=string.Format("{0:C}元",dt.Rows[index]["Price"]);

3.DataGridView控件

DataGridView控件可以通过DataSource属性与DataSet中的数据表进行绑定,在窗体中以表格形式显示数据集中的数据,允许在表格中对数据进行编辑

3.1DataGridView控件的常用属性

属性 说明
Name 获取或设置DataGridView控件的名称
DataSource 获取或设置DataGridView控件所显示数据的数据源
Rows 获取DataGridView控件中所有行的集合
Colums 获取DataGridView控件中所有列的集合
SelectionMode 指示选中单元格的模式,选中一个单元格还是整行
SelectedCells 获取用户选中的单元格的集合
SelectedRows 获取用户选中的行的集合
SelectedColumns 获取用户选中的列的集合
MultiSelect 指示是否允许用户选中多个单元格、行或列
AllowUserToAddRows 指示是否允许用户在DataGridView中添加行
AllowUserToDeleteRows 指示是否允许用户在DataGridView中删除行
ReadOnly 指示是否允许用户编辑DataGridView的单元格
AllowGenerateColumns 指示在设置DataSource时是否自动创建列
ColumnHeadersVisible 指示是否显示列标题行
RowHeadersVisible 指示是否显示列标题列
CurrentCell 获取或设置当前处于活动状态的单元格
CurrentRow 获取包含当前单元格的行
AutoSizeColumnMode 可见列自动调整大小的模式,Fill所有列自动填充

3.2DataGridView控件的使用

向窗体内添加DataGridView控件——小三角编辑列(名称、页眉文本、绑定数据源)——设置DataGridView控件的数据源

DataGridView对象.DataSource=DataSet对象.Table["数据表名称或表索引"];

4.DataView对象筛选和排序数据

表示用于排序、筛选、搜索、编辑和导航的DataTable上可绑定数据的自定义视图

                                         DataView控件的常用属性
RowFilter 获取或设置用于筛选在DataView中查看哪些行的表达式
Sort 获取或设置DataView的一个或多个排序列以及排序顺序

4.1创建DataView对象

DataView dv=DataTable.DefaultView

DataView dv=new DataView(DataTable)

4.2筛选数据

DataView对象.RowFilter="过滤字符串"

逻辑运算符 AND、OR、NOT
关系运算符 <、>、>=、<=、!=、==
算数 +、-、*、\、%
LIKE like通配符(*和%)
聚合 SUM、COUNT、MIN、MAX、AVG
dv.RowFilter=string.Format("Name like '%{0}%'",textBox.Text);

4.3排序数据 

DataView对象.Sort="列名[ASC|DESC],列[ASC|DESC]....";

dv.Sort="Phone DESC";
dataGridView1.DataSource=dv;

八、Windows高级控件

1.树型控件TreeView

                                             TreeView的常用属性
属性 说明
Name 获取或设置控件的名称
Nodes TreeView控件根节点集合
SelectedNode 获取或设置当前TreeView控件中选定的树节点
ImageList 获取或设置当前TreeView控件中所使用的图像集,关联ImageList控件
ImageIndex 获取或设置树节点显示的图像,在ImageList图像集中的索引
SelectedImageIndex 获取或设置节点被选中时显示的图像,在ImageList图像集中的所有
                                           TreeView的常用事件
事件 说明
AfterCollapse 在折叠对节点后触发
AfterExpand 在展开对节点后触发
AfterSelect 在更改选中节点后触发
Click 在点击TreeView控件时触发

1.1使用代码添加节点

private void TreeViewForm-Load(Object sender,EventArgs e){
    TreeNode root=new TreeNode("STTF公司产品");//创建根节点
    this.tvSTTF.Nodes.Add(root);//将根节点连接到TreeView控件上
    TreeNode tvNode=new TreeNode("电视");//创建电视节点
    root.Nodes.Add(tvNode);//将其连接到根节点上
    TreeNode tvSubNode=new TreeNode("平板电视");//创建平板电视节点
    tvNode.Nodes.Add(tvSubNode);//将其连接到电视节点上
    this.tvSTTF.ExpandAll();//展开所有节点
}

1.2使用代码删除节点

TreeView控件.Nodes.Remove(要删除的TreeNode节点对象);

this.tvSTTF.Nodes.Remove(tvNode);

2.TreeView控件常用操作

2.1树节点添加图标

向窗体中添加图像集ImageList控件——将TreeView控件与ImageList控件进行关联——设置ImageIndex属性(默认节点图标)、SelectedImageIndex属性(选中节点图标)

2.2获取选中节点

private void treeView1-AfterSelect(Object sender,TreeViewEventArgs e){
    TreeNode selectedNode=this.treeView1.SelectedNode;
    MessageBox.Show(string.Format("你选中了节点:{0}",selectedNode.Text));
}

3.列表视图控件ListView

                                         ListView控件的常用属性
属性 说明
Name 控件名称
Items 包含控件中所有项的集合
Columns 控件中显示的所有列标题的集合
View 控件的显示视图
LargeImageList 当控件以大图标视图显示时使用的ImageList
SmallImageList 当控件以小图标视图显示时使用的ImageList
GridLines 在包含控件中的行和列之间是否显示网格线
MultiSelect 是否可以选择多项
SelectedItems 获取在控件中选定的项
FullRowSelect 单击某项是否选择其所有子项

3.1方法

Clear() 从控件中移除所有项和列,清空ListView

3.2事件

Click 在单击ListView控件时触发

SelectedIndexChanged 当选定项发生更改时触发

3.3ListView添加项 

private void ProductListForm-Load(object sender,EventArgs e){
    ListViewItem item1=new ListViewItem("MWatch3");//创建ListViewItem对象
    item1.SubItems.Add("$3888.00");
    item1.SubItems.Add("100");
    this.tvSTTF.Item.Add(item1);
}

3.3ListView移除项  

ListView对象.Items.Remove(要移除的项);

4.ListView控件视图切换

                                            View属性的值及说明
属性 说明
Details 详细视图
LargeIcon(默认值) 大图标
SmallIcon 小图标
List 列表
Tile 平铺
ContextMenuStrip 右键菜单

你可能感兴趣的:(c#,开发语言)