C#基础知识及题目练习 Day25 使用DataAdapter把数据库数据填充到DataSet并把修改的数据更新到数据库、数据显示控件DataGridView

C# 专栏收录该内容
31 篇文章 3 订阅

目录

一、数据集对象DataSet

二、适配器对象DataAdapter--如何将数据库的数据放在 DataSet 中

三、数据显示控件DataGridView

eg1:使用ListView

eg2:使用datagridview:


一、数据集对象DataSet

驻留于内存,临时存储数据。

简单理解为一个临时数据库,将数据源的数据保存在内存中,独立于任何数据库。

----在CensorForm窗体的Load事件里实现添加数据的代码:

DataTable table = new DataTable(); //创建表对象

//添加表的列结构(列名,数据类型),共添加4

table.Columns.Add("姓名", Type.GetType("System.String"));

//用表对象创建一个数据行对象,数据行对象的列结构和表对象一样

DataRow row = table.NewRow();

row["姓名"] = "唐僧";   //给这个数据行的4个列赋值

table.Rows.Add(row); //把这个数据行添加到表对象的行集合中

allInfo.Tables.Add(table); //把表对象添加到数据集的表集合中

 

二、适配器对象DataAdapter--如何将数据库的数据放在 DataSet

1.属性和方法:

属性

说明

SelectCommand

从数据库查询数据的Command对象

方法

说明

Fill()

从数据库查询数据并填充到DataSet对象的表中

Update()

DataSet对象中的数据保存回数据库中

2.通过DataAdapter对象填充DataSet

DataSet allPatient = new DataSet();  //创建DataSet对象

SqlDataAdapter adapter; //声明DataAdapter对象

//窗体加载事件

private void PatientInfoForm_Load(object sender, EventArgs e)

{

    string strsql = "select * from MovieInfo";

    adapter = new SqlDataAdapter(strsql,con);//Strsql是查询SQL语句,con是连接对象

    //查询并填充DataSet对象

    adapter.Fill(allPatient,"PatientInfo");//PatientInfo是临时表名,可以和数据库表名不同

}

3.DataSet中的数据保存回数据库

  • 1.DataSetDataTable中添加一行数据
  • DataRow row = DataSet对象.Tables[“表名"].NewRow();

    row[“列名”] = ;

  • 或删除DataSet中的选中行 :

  • DataSet对象.Tables[“表名”].Rows[行索引].Delete();

  • 2.创建SqlCommandBuilder对象
  • SqlCommandBuilder builder = new SqlCommandBuilder(DataAdapter对象);

  • 3.使用DataAdapter对象的Update()方法执行更新

        DataAdapter对象.Update(DataSet对象, “表名");

eg:

DataRow row = allMovies.Tables["MovieInfo"].NewRow();

//给数据行的各列赋值

row["PName"] = name;

//把新创建的数据行添加到数据集的数据表中

allMovies.Tables["MovieInfo"].Rows.Add(row);

//创建自动进行保存功能的CommandBuilder对象

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

adapter.Update(allPatient, “PatientInfo”);  //把数据集中PatientInfo表的所有数据更新回数据库

 

三、数据显示控件DataGridView

1.属性:

Columns

包含列的集合

DataSource

DataGridView显示数据的数据源,比如DataSet

ReadOnly

控件中的单元格是否可以编辑

DataPropertyName

控件列绑定数据源的列名

HeaderText

列标题文本

Visible

指定列是否可见

ReadOnly

指定此列是否只读

 2.在DataGridView中显示数据:

string strsql = "select * from PatientInfo";

adapter = new SqlDataAdapter(strsql, con);

//查询并填充DataSet对象

adapter.Fill(allPatient,"PatientInfo");

//指定DataGridView控件的数据源是DataSet中的PatientInfo

dgvPatients.DataSource = allPatient.Tables["PatientInfo"];

2.鼠标双击单元格直接修改此单元格内数据

//创建自动进行保存功能的CommandBuilder对象

SqlCommandBuilder builder = new SqlCommandBuilder(adapter);

//把数据集中PatientInfo表的数据更新回数据库

adapter.Update(allPatient, "PatientInfo");

 

eg1:使用ListView

    public partial class Form1 : Form
    {
        //创建连接对象
        SqlConnection con = new SqlConnection("data source=.;initial catalog=test;user id=sa;pwd=admin123");
        DataSet allMovies = new DataSet();//创建DataSet对象
        //创建DataAdapter对象
        SqlDataAdapter adapter;
        int nSelectedIndex = -1;    //当前选中项的下标
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //保存查询语句
            string strsql = "select * from MovieInfo";
            //创建DataAdapter对象
            adapter = new SqlDataAdapter(strsql, con);
            //查询并填充DataSet对象
            adapter.Fill(allMovies, "MovieInfo");
            //循环从数据集的表集合中的第一个表的行集合中每次得到一个行对象
            foreach(DataRow row in allMovies.Tables[0].Rows)
            {
                string name = row["MovieName"].ToString();
                string type = row["MovieType"].ToString();
                string leader = row["MovieCompany"].ToString();
                string rank = row["Rank"].ToString();
                //创建列表视图显示项,把值添加到显示项中
                ListViewItem lviItem = new ListViewItem(name);
                lviItem.SubItems.AddRange(new string[] { type, leader, rank });
                //把显示项添加到列表视图控件的项集合中
                lviMovie.Items.Add(lviItem);
            }
        }

        //验证非空的自定义方法
        private bool CheckInfo()
        {
            bool b = true;
            if (txtName.Text.Trim() == "" || txtLeader.Text.Trim() == "" || cmbType.Text.Trim() == "" || txtRank.Text.Trim() == "")
            {
                MessageBox.Show("请输入完整信息!");
                b = false;
            }
            return b;
        }
        /// <summary>
        /// 添加新上映电影
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAdd_Click(object sender, EventArgs e)
        {
            bool b = CheckInfo();   //调用自定义方法
            if (b == false) //判断验证是否通过
            {
                return;
            }
            try
            {
                //保存电影信息
                string name = txtName.Text.Trim();
                string type = cmbType.Text.Trim();
                string leader = txtLeader.Text.Trim();
                string rank = txtRank.Text.Trim();
                //创建同数据集的数据表结构相同的数据行对象
                DataRow row = allMovies.Tables["MovieInfo"].NewRow();
                row["MovieName"] = name;
                row["MovieType"] = type;
                row["MovieCompany"] = leader;
                row["Rank"] = rank;
                //把新创建的数据行添加到数据集的数据表中
                allMovies.Tables["MovieInfo"].Rows.Add(row);
                //创建自动进行保存功能的CommandBuilder对象
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                //把数据集中MovieInfo表的数据更新回数据库
                adapter.Update(allMovies, "MovieInfo");
                //把信息显示在列表视图控件里
                ListViewItem item = new ListViewItem(name);
                item.SubItems.AddRange(new string[] { type, leader, rank });
                lviMovie.Items.Add(item);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        /// <summary>
        /// 修改电影信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMody_Click(object sender, EventArgs e)
        {
            bool b = CheckInfo(); //调用自定义方法
            if (b == false)//判断验证是否通过
            {
                return;//结束保存
            }
            if (nSelectedIndex < 0)
            {
                MessageBox.Show("未选中任何行,请选中一行进行修改","警告");
                return;
            }
            try
            {
                //保存电影信息
                string name = txtName.Text.Trim();
                string type = cmbType.Text.Trim();
                string leader = txtLeader.Text.Trim();
                string rank = txtRank.Text.Trim();
                //修改DataSet中选中行对应的数据表的各列数据
                allMovies.Tables["MovieInfo"].Rows[nSelectedIndex]["MovieName"] = name;
                allMovies.Tables["MovieInfo"].Rows[nSelectedIndex]["MovieType"] = name;
                allMovies.Tables["MovieInfo"].Rows[nSelectedIndex]["MovieCompany"] = name;
                allMovies.Tables["MovieInfo"].Rows[nSelectedIndex]["Rank"] = name;
                //创建自动进行保存功能的CommandBuilder对象
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                //把数据集中MovieInfo表的数据更新回数据库
                adapter.Update(allMovies, "MovieInfo");
                //修改ListView控件中选中行的各列数据
                lviMovie.Items[nSelectedIndex].SubItems[0].Text = name;
                lviMovie.Items[nSelectedIndex].SubItems[1].Text = type;
                lviMovie.Items[nSelectedIndex].SubItems[2].Text = leader;
                lviMovie.Items[nSelectedIndex].SubItems[3].Text = rank;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void lviMovie_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lviMovie.SelectedItems.Count <= 0) return;
            if (lviMovie.SelectedItems != null)
            {
                nSelectedIndex = lviMovie.SelectedItems[0].Index;
                txtName.ReadOnly = true;
                txtName.Text = lviMovie.SelectedItems[0].Text;
                cmbType.Text = lviMovie.SelectedItems[0].SubItems[1].Text;
                txtLeader.Text = lviMovie.SelectedItems[0].SubItems[2].Text;
                txtRank.Text = lviMovie.SelectedItems[0].SubItems[3].Text;

            }
        }
        /// <summary>
        /// 删除电影信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDel_Click(object sender, EventArgs e)
        {
            if (lviMovie.SelectedItems.Count <= 0)
            {
                MessageBox.Show("请选中一行进行删除。");
                return;
            }
            try
            {
                DialogResult result = MessageBox.Show("确定要删除该条记录吗?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (result == DialogResult.No) return;
                //在DataSet中删除选中行
                allMovies.Tables["MovieInfo"].Rows[nSelectedIndex].Delete();
                //创建自动进行保存功能的CommandBuilder对象
                SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
                //把数据集中MovieInfo表的数据更新回数据库
                adapter.Update(allMovies, "MovieInfo");
                //删除成功后从列表视图控件中清除选中项
                lviMovie.Items.RemoveAt(nSelectedIndex);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

eg2:使用datagridview:

    public partial class Form1 : Form
    {
        //创建连接对象
        SqlConnection con = new SqlConnection("data source=.;initial catalog=test;user id=sa;pwd=admin123");
        DataSet allMovies = new DataSet();//创建DataSet对象
        //创建DataAdapter对象
        SqlDataAdapter adapter;
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            //保存查询语句
            string strsql = "select * from MovieInfo";
            //创建DataAdapter对象
            adapter = new SqlDataAdapter(strsql, con);
           // allMovies.Tables["MovieInfo"].PrimaryKey = new DataColumn[] { allMovies.Tables["MovieInfo"].Columns["id"] };
            //查询并填充DataSet对象
            adapter.Fill(allMovies, "MovieInfo");
            //指定DataGridView控件的数据源是DataSet中的PatientInfo表
            dgvMovies.DataSource = allMovies.Tables["MovieInfo"];
        }
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //创建自动进行保存功能的CommandBuilder对象
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            //把数据集中PatientInfo表的数据更新回数据库 
            //*****运用这种方式,必须为表指定主键,或者手动写update sql
            adapter.Update(allMovies, "MovieInfo");
            //指定DataGridView控件的数据源是DataSet中的PatientInfo表
            dgvMovies.DataSource = allMovies.Tables["MovieInfo"];
        }
    }

使用listView的备份:

public partial class AdminManage : Form
    {
        //1.数据库连接字符串
        string strCon = "data source=.;database=Bookview;user id=sa;pwd=machenxi";
        int selectIndex=-1;//保存列表视图控件中选中项的索引
        DataSet allPatient = new DataSet();//创建DataSet对象
        //创建DataAdapter对象
        SqlDataAdapter adapter;

        //书籍集合,存储所有书籍信息
        List<BooksInStore> lstB = new List<BooksInStore>();

        //窗体加载事件
        public AdminManage()
        {
            InitializeComponent();
            
            ShowAllBooks();
        }
        //点击添加
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (CheckInfo() == false)//判断验证是否通过
            {
                return;//结束保存
            }
            //2、创建数据库连接对象
            SqlConnection con = new SqlConnection(strCon);
            //3、打开数据库连接
            con.Open();
            toolStripStatusLabel1.Text = "数据库已连接...";
            //4、创建SqlCommand对象
            SqlCommand cmd = new SqlCommand();
            //5、赋值Connection属性
            cmd.Connection = con;
            //6、获取控件上输入的书籍名称等
            string bookName = txtName.Text.Trim();   //书籍名称
            string bookAuthor = txtAuthor.Text.Trim();   //书籍作者
            string bookPath = txtPath.Text.Trim();   //文件路径
            string bookIntro = txtIntro.Text.Trim();   //书籍简介
            string bookImagePath = txtImagePath.Text.Trim();//封面路径
            string bookCategory = txtCategory.Text.Trim();//类别
            double bookPrice = double.Parse(txtPrice.Text.Trim());//价格
            //7、编写sql语句
            string sql = string.Format("insert into Authors values('{0}','{1}','{2}','{3}',{4},'{5}','{6}',{7},)", bookName, bookAuthor, bookCategory, bookIntro, bookImagePath, bookPath, bookPrice);
            //8、赋值给CommandText
            cmd.CommandText = sql;
            //9、调用方法,执行Command命令
            int n = cmd.ExecuteNonQuery();
            if (n > 0)
            {
                toolStripStatusLabel1.Text = "数据插入成功!!";
            }
            else
            {
                toolStripStatusLabel1.Text = "数据插入失败...";
            }
            ShowAllBooks();
            //10、关闭连接
            con.Close();

            创建同数据集的数据表结构相同的数据行对象
            //DataRow r = allPatient.Tables["BookstoreInfo"].NewRow();
            给数据行的各列赋值
            r["bookID"] = bookName;
            //r["bookName"] = bookName;
            //r["Author"] = bookAuthor;
            //r["Category"] = bookCategory;
            //r["Intro"] = bookIntro;
            //r["imgPath"] = bookImagePath;
            //r["txtPath"] = bookPath;
            //r["Price"] = bookPrice;
            把新创建的数据行添加到数据集的数据表中
            //allPatient.Tables["BookstoreInfo"].Rows.Add(r);
            创建自动进行保存功能的CommandBuilder对象
            //SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            把数据集中PatientInfo表的数据更新回数据库※
            //adapter.Update(allPatient, "BookstoreInfo");

        }

        //从数据库中查询并显示到listview中
        private void ShowAllBooks()
        {
            //清空ListView中的现有项
            listView1.Items.Clear();
            try
            {
                //保存查询语句
                string strsql = "select * from Bookstore";
                //创建DataAdapter对象
                adapter = new SqlDataAdapter(strsql, strCon);
                //查询并填充DataSet对象
                adapter.Fill(allPatient, "BookstoreInfo");
                //循环从数据集的表集合中的第一个表的行集合中每次得到一个行对象
                foreach (DataRow r in allPatient.Tables[0].Rows)
                {
                    int id = (int)r["bookID"];
                    string name = r["bookName"].ToString();
                    string author = r["Author"].ToString();
                    string category = r["Category"].ToString();
                    string intro = r["Intro"].ToString();
                    string imgPath = r["imgPath"].ToString();
                    string txtPath = r["txtPath"].ToString();
                    double price = (double)r["Price"];
                    BooksInStore b = new BooksInStore(id, name, author, category, intro, imgPath, txtPath, price);
                    //将该类对象添加到集合中
                    lstB.Add(b);

                    //将该作者信息添加ListView控件中
                    //创建ListVIewItem,将要显示的第一列赋值给该对象
                    ListViewItem item = new ListViewItem(b.BNum.ToString());
                    //添加其他列
                    string[] arr = { b.BName, b.BAuthor, b.BCategory, b.BIntro, b.BImagePath, b.BPath, b.BPrice.ToString() };
                    item.SubItems.AddRange(arr);
                    //6、3:将该ListViewItem添加到ListView控件中
                    listView1.Items.Add(item);
                }
                toolStripStatusLabel1.Text = "数据已加载...";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                throw;
            }
        }

        //验证非空的自定义方法
        private bool CheckInfo()
        {
            bool b = true;
            if (txtName.Text.Trim() == "" || txtPath.Text.Trim() == "" )
            {
                MessageBox.Show("请输入完整信息!");
                b = false;
            }
            return b;
        }

        //点击修改
        private void btnChange_Click(object sender, EventArgs e)
        {
            //判断是否选中项
            if (txtNum.Text == "")
            {
                MessageBox.Show("请选中一行进行修改!");
                return;
            }
            if (CheckInfo() == false)//判断验证是否通过
            {
                return;//结束保存
            }
            
            //从控件上取出已经修改好的值
            string bookName = txtName.Text.Trim();   //书籍名称
            string bookAuthor = txtAuthor.Text.Trim();   //书籍作者
            string bookPath = txtPath.Text.Trim();   //文件路径
            string bookIntro = txtIntro.Text.Trim();   //书籍简介
            string bookImagePath = txtImagePath.Text.Trim();//封面路径
            string bookCategory = txtCategory.Text.Trim();//类别
            double bookPrice = double.Parse(txtPrice.Text.Trim());//价格
            //编写sql语句
            //string sql = string.Format("update Bookstore set BookName='{0}', Author='{1}',Category='{2}', intro='{3}',imgPath='{4}',txtPath='{5}',Price='{6}' where bookID={7}",
            //     bookName, bookAuthor, bookCategory, bookIntro, bookImagePath, bookPath, bookPrice, txtNum.Text);

            //修改DataSet中选中行对应的数据表的各列数据
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["bookName"] = bookName;
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["Author"] = bookAuthor;
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["txtPath"] = bookPath;
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["Intro"] = bookIntro;
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["imgPath"] = bookImagePath;
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["txtPath"] = bookPath;
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex]["Price"] = bookPrice;
            //创建自动进行保存功能的CommandBuilder对象
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            //把数据集中PatientInfo表的数据更新回数据库
            adapter.Update(allPatient, "BookstoreInfo");
            //修改ListView控件中选中行的各列数据
            listView1.Items[selectIndex].SubItems[1].Text = bookName;
            listView1.Items[selectIndex].SubItems[2].Text = bookAuthor;
            listView1.Items[selectIndex].SubItems[3].Text = bookCategory;
            listView1.Items[selectIndex].SubItems[4].Text = bookIntro;
            listView1.Items[selectIndex].SubItems[5].Text = bookImagePath;
            listView1.Items[selectIndex].SubItems[6].Text = bookPath;
            listView1.Items[selectIndex].SubItems[7].Text = bookPrice.ToString();
            toolStripStatusLabel1.Text = "数据库修改成功...";
        }

        //点击删除
        private void btnDel_Click(object sender, EventArgs e)
        {
            //判断是否选中项
            if (txtNum.Text == "")
            {
                MessageBox.Show("请选中一行进行删除!");
                return;
            }
            //在DataSet中删除选中行
            allPatient.Tables["BookstoreInfo"].Rows[selectIndex].Delete();
            //创建自动进行保存功能的CommandBuilder对象
            SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
            //把数据集中PatientInfo表的数据更新回数据库
            adapter.Update(allPatient, "BookstoreInfo");
            //删除成功后从列表视图控件中清除选中项
            listView1.Items.RemoveAt(selectIndex);
            toolStripStatusLabel1.Text = "数据库已连接...";
        }

        //点击确定
        private void btnYes_Click(object sender, EventArgs e)
        {

        }

        //回显
        private void listView1_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count > 0)
            {
                //把选中项的索引保存住
                selectIndex = listView1.SelectedItems[0].Index;
                //当前选中行的第一列的值
                txtNum.Text = listView1.SelectedItems[0].Text;

                //此处应该使用类的属性名而不是数据库中的
                if (listView1.SelectedItems[0].SubItems[1] != null) //姓名
                {
                    txtName.Text = listView1.SelectedItems[0].SubItems[1].Text;
                }
                if (listView1.SelectedItems[0].SubItems[2] != null) //作者
                {
                    txtAuthor.Text = listView1.SelectedItems[0].SubItems[2].Text;
                }
                if (listView1.SelectedItems[0].SubItems[3] != null) //类别
                {
                    txtCategory.Text = listView1.SelectedItems[0].SubItems[3].Text;
                }
                if (listView1.SelectedItems[0].SubItems[4] != null) //简介
                {
                    txtIntro.Text = listView1.SelectedItems[0].SubItems[4].Text;
                }
                if (listView1.SelectedItems[0].SubItems[5] != null) //封面地址
                {
                    txtImagePath.Text = listView1.SelectedItems[0].SubItems[5].Text;
                }
                if (listView1.SelectedItems[0].SubItems[6] != null) //文件地址
                {
                    txtPath.Text = listView1.SelectedItems[0].SubItems[6].Text;
                }
                if (listView1.SelectedItems[0].SubItems[7] != null) //价格
                {
                    txtPrice.Text = listView1.SelectedItems[0].SubItems[7].Text;
                }
            }
        }
    }

 

  • 1
    点赞
  • 0
    评论
  • 7
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体常用控件、Windows高级控件控件公共属性、方法事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,每一个知识点都配有具体的示例,便于读者理解。 《C#全能速查宝典》所讲的知识点按照功能和字母进行排序,读者既可以按照功能顺序查找,又可以按照字母顺序学习。 《C#全能速查宝典》不仅适合C#程序设计初学者,也可作为中、高级程序开发人员的参考手册。 ============================================================ 图书目录 第1章 C#语言基础 1 1.1 常用概念、关键字基础类 1 1.1.1 abstract关键字&mdash;&mdash;抽象 1 1.1.2 as操作符&mdash;&mdash;引用类型转换 3 1.1.3 base关键字&mdash;&mdash;从派生类中访问基类的成员 3 1.1.4 变量&mdash;&mdash;存储特定类型的数据 4 1.1.5 Console类&mdash;&mdash;控制台中的输入流、输出流和错误流 6 1.1.6 Convert类&mdash;&mdash;类型转换 8 1.1.7 常量&mdash;&mdash;值不改变的量 9 1.1.8 Dispose方法&mdash;&mdash;释放资源 10 1.1.9 迭代器&mdash;&mdash;相同类型的值的有序序列的一段代码 10 1.1.10 泛型&mdash;&mdash;处理算法和数据结构 11 1.1.11 分部类&mdash;&mdash;将一个类分成几部分 12 1.1.12 is操作符&mdash;&mdash;检查变量是否为指定的类型 14 1.1.13 lock关键字&mdash;&mdash;锁定 15 1.1.14 namespace关键字&mdash;&mdash;定义命名空间 15 1.1.15 new运算符&mdash;&mdash;创建一个新的类型实例 16 1.1.16 Object类型&mdash;&mdash;所有类型的基类 17 1.1.17 OOP技术&mdash;&mdash;面向对象编程技术 18 1.1.18 ReadLine方法&mdash;&mdash;从当前流中读取一行字符 20 1.1.19 typeof运算符&mdash;&mdash;获得系统原型对象的类型 21 1.1.20 using关键字&mdash;&mdash;引入命名空间 22 1.1.21 WriteLine方法&mdash;&mdash;写入流 23 1.2 数学方法类&mdash;&mdash;Math 25 1.2.1 Abs方法&mdash;&mdash;返回指定数字的绝对值 25 1.2.2 Acos方法&mdash;&mdash;返回余弦值为指定数字的角度 26 1.2.3 Asin方法&mdash;&mdash;返回正弦值为指定数字的角度 26 1.2.4 Atan方法&mdash;&mdash;返回正切值为指定数字的角度 27 1.2.5 Pow方法&mdash;&mdash;返回指定数字的指定次幂 27 1.2.6 Round方法&mdash;&mdash;将小数值舍入指定的精度 28 1.3 流程控制语句 29 1.3.1 break语句&mdash;&mdash;跳出循环 29 1.3.2 case语句&mdash;&mdash;比较表达式以确定结果 30 1.3.3 continue语句&mdash;&mdash;继续执行下一个循环 31 1.3.4 do…while语句&mdash;&mdash;循环语句 31 1.3.5 for语句&mdash;&mdash;循环语句 32 1.3.6 foreach语句&mdash;&mdash;枚举一个集合的元素 33 1.3.7 goto语句&mdash;&mdash;跳转标签 34 1.3.8 if…else语句&mdash;&mdash;条件判断语句 36 1.3.9 return语句&mdash;&mdash;返回 38 1.3.10 switch case语句&mdash;&mdash;条件判断语句 39 1.3.11 throw语句&mdash;&mdash;显式引发异常 40 1.3.12 try…catch…finally语句&mdash;&mdash;捕捉异常 42 1.3.13 while语句&mdash;&mdash;循环语句 43 1.4 字符串处理 44 1.4.1 AddDays方法&mdash;&mdash;添加天数 44 1.4.2 AddString方法&mdash;&mdash;添加文本字符串 45 1.4.3 Compare方法&mdash;&mdash;比较两个字符串 46 1.4.4 CompareTo方法&mdash;&mdash;比较两个字符串对象 47 1.4.5 DATEADD函数&mdash;&mdash;在指定日期上加一段时间 48 1.4.6 DateDiff方法&mdash;&mdash;获取日期时间的间隔数 48 1.4.7 DateTime结构&mdash;&mdash;表示时间上的一刻 50 1.4.8 DAY函数&mdash;&mdash;返回日期部分的整数 51 1.4.9 DayOfWeek属性&mdash;&mdash;获取星期几 52 1.4.10 Equals方法&mdash;&mdash;比较两个字符串对象 53 1.4.11 First函数&mdash;&mdash;返回查询结果的第一个记录 55 1.4.12 FirstDayOfWeek属性&mdash;&mdash;获取或设置一周中的第一天 56 1.4.13 Format方法&mdash;&mdash;格式化字符串 56 1.4.14 GETDATE函数&mdash;&mdash;返回当前系统日期和时间 58 1.4.15 GetDayOfMonth方法&mdash;&mdash;返回几号 59 1.4.16 GetDayOfWeek方法&mdash;&mdash;返回星期几 59 1.4.17 GetDayOfYear方法&mdash;&mdash;返回第几天 60 1.4.18 GetDaysInMonth方法&mdash;&mdash;返回指定月份中的天数 60 1.4.19 GetDaysInYear方法&mdash;&mdash;返回指定年份中的天数 61 1.4.20 GetMonth方法&mdash;&mdash;返回指定日期中的月份 61 1.4.21 GetMonthsInYear方法&mdash;&mdash;返回指定年份的月数 62 1.4.22 GetText方法&mdash;&mdash;检索文本数据 63 1.4.23 GetYear方法&mdash;&mdash;返回指定日期中的年份 64 1.4.24 IndexOf方法&mdash;&mdash;确定指定字符在字符串中的索引 65 1.4.25 IsLeapYear方法&mdash;&mdash;判断年份是否为闰年 67 1.4.26 IsMatch方法&mdash;&mdash;搜索正则表达式匹配项 67 1.4.27 IsUpper方法&mdash;&mdash;判断是否大写 68 1.4.28 Join方法&mdash;&mdash;串联字符串 69 1.4.29 LastIndexOf方法&mdash;&mdash;确定字符在字符串中最后索引 70 1.4.30 Matches方法&mdash;&mdash;检查字符串是否有重复的词出现 71 1.4.31 MONTH函数&mdash;&mdash;返回指定日期中月部分的整数 73 1.4.32 PadLeft方法&mdash;&mdash;在左边用空格填充 73 1.4.33 PadRight方法&mdash;&mdash;在右边用空格填充 74 1.4.34 Random类&mdash;&mdash;伪随机数生成器 75 1.4.35 Regex类&mdash;&mdash;正则表达式 76 1.4.36 Split方法&mdash;&mdash;分割字符串 78 1.4.37 String类&mdash;&mdash;字符串 79 1.4.38 StringBuilder类&mdash;&mdash;可变字符串 82 1.4.39 Substring方法&mdash;&mdash;截取字符串 83 1.4.40 TimeSpan对象&mdash;&mdash;表示时间间隔或持续时间 84 1.4.41 ToInt32方法&mdash;&mdash;转换为32位有符号整数 85 1.4.42 ToLongDateString 方法&mdash;&mdash;转换为长日期字符串 86 1.4.43 ToLongTimeString 方法&mdash;&mdash;转换为长时间字符串 87 1.4.44 ToLower方法&mdash;&mdash;转换为小写 87 1.4.45 ToShortDateString方法&mdash;&mdash;转换为短日期字符串 88 1.4.46 ToShortTimeString方法&mdash;&mdash;转换为短时间字符串 88 1.4.47 ToString方法&mdash;&mdash;转换为字符串 89 1.4.48 ToUpper方法&mdash;&mdash;转换为大写 90 1.4.49 Trim方法&mdash;&mdash;移除所有空白字符 91 1.4.50 TrimEnd方法&mdash;&mdash;从尾部移除匹配项 92 1.4.51 TrimStart方法&mdash;&mdash;从开始移除匹配项 92 1.4.52 YEAR函数&mdash;&mdash;返回指定日期的年份的整数 93 1.5 数组与集合 93 1.5.1 Add方法&mdash;&mdash;添加项 93 1.5.2 ArrayList类&mdash;&mdash;集合 95 1.5.3 AsEnumerable方法&mdash;&mdash;转换为IEnumerable类型 97 1.5.4 Clear方法&mdash;&mdash;清空内容 98 1.5.5 Contains方法&mdash;&mdash;确定是否包含某项 99 1.5.6 ContainsKey方法&mdash;&mdash;确定哈希表是否包含特定键 100 1.5.7 ContainsText方法&mdash;&mdash;确定剪贴板中是否存在数据 101 1.5.8 ContainsValue方法&mdash;&mdash;确定哈希表是否包含特定值 101 1.5.9 Count属性&mdash;&mdash;获取数目 102 1.5.10 GetEnumerator方法&mdash;&mdash;循环访问对象 103 1.5.11 GetEnvironmentVariables方法&mdash;&mdash;检索环境变量 104 1.5.12 Hashtable类&mdash;&mdash;哈希表 106 1.5.13 Insert方法&mdash;&mdash;插入项 110 1.5.14 Item属性&mdash;&mdash;获取或设置指定索引处的元素 111 1.5.15 Length属性&mdash;&mdash;获取长度 112 1.5.16 Next方法&mdash;&mdash;返回一个指定范围内的随机数 113 1.5.17 Queue类&mdash;&mdash;队列 115 1.5.18 Remove方法&mdash;&mdash;移除指定项 116 1.5.19 RemoveAt方法&mdash;&mdash;移除指定索引处的项 118 1.5.20 Replace方法&mdash;&mdash;替换文件或字符串 119 1.5.21 Reverse方法&mdash;&mdash;反转数组元素 120 1.5.22 Sort方法&mdash;&mdash;数组排序 121 1.5.23 Stack类&mdash;&mdash;堆栈 123 第2章 Windows窗体常用控件 126 2.1 Form窗体 126 2.1.1 AcceptButton属性&mdash;&mdash;设置接受按钮 126 2.1.2 Activate事件&mdash;&mdash;当激活窗体时发生 126 2.1.3 Appllication类&mdash;&mdash;提供管理应用程序的静态方法 126 2.1.4 CancelButton属性&mdash;&mdash;设置取消按钮 128 2.1.5 Computer类&mdash;&mdash;提供操作计算机组件的属性 129 2.1.6 ComputerInfo类&mdash;&mdash;获取计算机信息 130 2.1.7 Control类&mdash;&mdash;定义控件基类 131 2.1.8 Environment类&mdash;&mdash;提供当前环境和平台的信息 134 2.1.9 Form窗体&mdash;&mdash;可视化界面 136 2.1.10 FormClosed事件&mdash;&mdash;关闭窗体后事件 139 2.1.11 FormClosing事件&mdash;&mdash;关闭窗体前事件 139 2.1.12 Icon属性&mdash;&mdash;设置图标 139 2.1.13 IsMdiContainer属性&mdash;&mdash;设置父窗体 140 2.1.14 LayoutMdi方法&mdash;&mdash;排列子窗体 141 2.1.15 Load事件&mdash;&mdash;窗体加载事件 141 2.1.16 MaximizeBox属性&mdash;&mdash;是否显示最大化按钮 142 2.1.17 Maximum属性&mdash;&mdash;设置数字显示框的最大值 142 2.1.18 MDI窗体&mdash;&mdash;多文档界面 143 2.1.19 MdiChildren属性&mdash;&mdash;获取子窗体的数组 146 2.1.20 MdiParent属性&mdash;&mdash;设置父窗体 147 2.1.21 MinimizeBox属性&mdash;&mdash;是否显示最小化按钮 147 2.1.22 Minimum属性&mdash;&mdash;数字显示框的最小值 148 2.1.23 Opacity属性&mdash;&mdash;设置窗体的透明度级别 148 2.1.24 Owner属性&mdash;&mdash;设置窗体所有者 149 2.1.25 StartPosition属性&mdash;&mdash;设置窗体起始位置 150 2.1.26 StartupPath 属性&mdash;&mdash;获取可执行文件路径 150 2.1.27 TopMost属性&mdash;&mdash;窗体是否应显示为最顶层窗体 151 2.1.28 WindowState属性&mdash;&mdash;窗体的窗口状态 151 2.2 文本类控件 152 2.2.1 AllowEdit属性&mdash;&mdash;是否可以编辑列表项 152 2.2.2 AppendText方法&mdash;&mdash;追加文本 152 2.2.3 BeginEdit方法&mdash;&mdash;将单元格置于编辑模式下 153 2.2.4 Button控件&mdash;&mdash;按钮控件 153 2.2.5 CancelEdit属性&mdash;&mdash;取消更改 155 2.2.6 CanPaste方法&mdash;&mdash;是否可以粘贴数据 155 2.2.7 CanRedo属性&mdash;&mdash;是否有可以重新应用的操作 156 2.2.8 CanSelect属性&mdash;&mdash;是否可以选中控件 157 2.2.9 CanUndo属性&mdash;&mdash;能否撤销上一个操作 157 2.2.10 Cut方法&mdash;&mdash;将选定内容移动“剪贴板”中 158 2.2.11 Find方法&mdash;&mdash;搜索指定的项目 158 2.2.12 FindString方法&mdash;&mdash;搜索文本 160 2.2.13 Label控件&mdash;&mdash;标签控件 161 2.2.14 LabelEdit属性&mdash;&mdash;允许用户编辑控件数据 163 2.2.15 LinkLabel控件&mdash;&mdash;以超链接形式显示文本 164 2.2.16 MaskedTextBox控件&mdash;&mdash;使用掩码区分用户输入 166 2.2.17 Multiline属性&mdash;&mdash;是否为多行输入数据 169 2.2.18 PasswordChar属性&mdash;&mdash;取代用户输入而显示的字符 170 2.2.19 Redo方法&mdash;&mdash;重新应用控件中上次撤销的操作 171 2.2.20 RichTextBox控件&mdash;&mdash;有格式文本控件 171 2.2.21 Select方法&mdash;&mdash;激活控件 173 2.2.22 SelectAll方法&mdash;&mdash;选定所有文本 176 2.2.23 Selected属性&mdash;&mdash;是否选定 176 2.2.24 SelectedCells属性&mdash;&mdash;用户选定的单元格集合 177 2.2.25 SelectedColumns属性&mdash;&mdash;用户选定的列集合 178 2.2.26 SelectedRows属性&mdash;&mdash;用户选定的行集合 179 2.2.27 SelectionBackColor属性&mdash;&mdash;文本在选中时的颜色 180 2.2.28 SelectionColor属性&mdash;&mdash;插入点的文本颜色 180 2.2.29 SelectionEnd属性&mdash;&mdash;设置选定日期范围的结束日期 181 2.2.30 SelectionFont属性&mdash;&mdash;选定文本或插入点的字体 182 2.2.31 SelectionIndent属性&mdash;&mdash;所选内容开始行的缩进距离 183 2.2.32 SelectionLength属性&mdash;&mdash;控件中选定的字符数 184 2.2.33 SelectionRange 属性&mdash;&mdash;设置选定的日期范围 185 2.2.34 SelectionStart属性&mdash;&mdash;选择的起始位置的字符索引 185 2.2.35 TextBox控件&mdash;&mdash;输入或显示文本 186 2.2.36 TextChanged事件&mdash;&mdash;Text属性值更改时发生 187 2.3 选择类控件 188 2.3.1 CheckBox控件&mdash;&mdash;复选框控件 188 2.3.2 CheckBoxes属性&mdash;&mdash;是否显示复选框 190 2.3.3 Checked属性&mdash;&mdash;复选框是否处于选中状态 190 2.3.4 CheckedChanged事件&mdash;&mdash;Checked属性更改时发生 191 2.3.5 CheckedListBox控件&mdash;&mdash;复选框列表控件 191 2.3.6 CheckState属性&mdash;&mdash;设置CheckBox控件的状态 193 2.3.7 ComboBox控件&mdash;&mdash;下拉组合框控件 194 2.3.8 DomainUpDown控件&mdash;&mdash;上下选择控件 195 2.3.9 DropDownStyle属性&mdash;&mdash;指定组合框样式的值 197 2.3.10 GetItemCheckState方法&mdash;&mdash;当前项的复选状态的值 198 2.3.11 GetItemText方法&mdash;&mdash;指定项的文本表示形式 199 2.3.12 Index属性&mdash;&mdash;从零开始的索引 200 2.3.13 Items属性&mdash;&mdash;数组列表对象中的项的集合 200 2.3.14 ListBox控件&mdash;&mdash;列表控件 201 2.3.15 ListView控件&mdash;&mdash;显示带图标的项列表 205 2.3.16 NumericUpDown控件&mdash;&mdash;数值选择控件 208 2.3.17 RadioButton控件&mdash;&mdash;单选按钮 210 2.3.18 SelectedIndex属性&mdash;&mdash;获取选择项的索引 212 2.3.19 SelectedIndices属性&mdash;&mdash;表示当前选中的项 213 2.3.20 SelectedItem属性&mdash;&mdash;当前选中的项 214 2.3.21 SelectedItems属性&mdash;&mdash;选定项的集合 215 2.3.22 SelectedText属性&mdash;&mdash;选定文本 216 2.4 容器类控件 217 2.4.1 FlatStyle属性&mdash;&mdash;设置控件的平面样式外观 217 2.4.2 FlowDirection属性&mdash;&mdash;指示FlowLayoutPanel控件的流向 217 2.4.3 FlowLayoutPanel控件&mdash;&mdash;水平或垂直排列内容 218 2.4.4 GroupBox控件&mdash;&mdash;分组控件 219 2.4.5 Panel控件&mdash;&mdash;容器控件 220 2.4.6 TabControl控件&mdash;&mdash;选项卡控件 222 2.4.7 TabIndex属性&mdash;&mdash;控件Tab键顺序 224 2.4.8 TabPages属性&mdash;&mdash;选项卡页的集合 224 第3章 Windows高级控件 226 3.1 日期时间类控件 226 3.1.1 CalendarFont属性&mdash;&mdash;日历的字体样式 226 3.1.2 CalendarForeColor属性&mdash;&mdash;日历的前景色 226 3.1.3 DateTimePicker控件&mdash;&mdash;日期和日历的组合 226 3.1.4 MaxDate属性&mdash;&mdash;最大日期和时间 228 3.1.5 MinDate属性&mdash;&mdash;最小日期和时间 228 3.1.6 MonthCalendar控件&mdash;&mdash;以网格形式显示日历 229 3.1.7 SetDate方法&mdash;&mdash;将日期设置为当前选定的日期 231 3.1.8 ShowToday属性&mdash;&mdash;是否显示当前日期 232 3.2 对话框、菜单、工具栏状态栏控件 232 3.2.1 ColorDialog控件&mdash;&mdash;颜色对话框 232 3.2.2 ContextMenuStrip控件&mdash;&mdash;右键快捷菜单 233 3.2.3 ExpandAll方法&mdash;&mdash;展开所有树节点 233 3.2.4 Filter属性&mdash;&mdash;设置筛选器字符串 234 3.2.5 FolderBrowserDialog控件&mdash;&mdash;浏览文件夹对话框 234 3.2.6 Font属性&mdash;&mdash;设置字体 235 3.2.7 FontDialog控件&mdash;&mdash;字体对话框 235 3.2.8 InitialDirectory属性&mdash;&mdash;文件对话框显示的初始目录 237 3.2.9 MenuStrip控件&mdash;&mdash;菜单控件 238 3.2.10 Nodes属性&mdash;&mdash;树节点集合 241 3.2.11 OpenFileDialog控件&mdash;&mdash;打开文件对话框 241 3.2.12 RestoreDirectory属性&mdash;&mdash;是否还原当前目录 244 3.2.13 RootFolder属性&mdash;&mdash;设置浏览的根文件夹 245 3.2.14 SaveFileDialog组件&mdash;&mdash;保存文件对话框 246 3.2.15 SelectedNode属性&mdash;&mdash;获取选定的树节点 248 3.2.16 SelectedPath属性&mdash;&mdash;用户选定的路径 249 3.2.17 ShowDialog方法&mdash;&mdash;打开模式对话框 249 3.2.18 ToolStrip控件&mdash;&mdash;工具栏控件 251 3.2.19 TreeNode类&mdash;&mdash;树节点 252 3.2.20 TreeView控件&mdash;&mdash;树控件 254 3.3 数据绑定类控件 256 3.3.1 BindingNavigator控件&mdash;&mdash;导航和操作数据 256 3.3.2 Cell对象&mdash;&mdash;表示Word文档中的单元格 258 3.3.3 CellClick事件&mdash;&mdash;单元格的任何部分被单击时发生 259 3.3.4 CellEnter事件&mdash;&mdash;控件接收输入焦点时发生 260 3.3.5 CellMouseClick事件&mdash;&mdash;鼠标单击单元格时发生 261 3.3.6 CellLeave事件&mdash;&mdash;单元格失去输入焦点时发生 261 3.3.7 Cells属性&mdash;&mdash;Bookmark控件中的表单元格 261 3.3.8 ColumnCount属性&mdash;&mdash;DataGridView控件显示的列数 262 3.3.9 Columns属性&mdash;&mdash;控件中所有列的集合 262 3.3.10 ColumnWidth属性&mdash;&mdash;ListBox中列的宽度 263 3.3.11 CurrentCell属性&mdash;&mdash;设置当前处于活动状态的单元格 263 3.3.12 CurrentRow属性&mdash;&mdash;包含当前单元格的行 263 3.3.13 DataGridView控件&mdash;&mdash;数据控件 264 3.3.14 FullRowSelect属性&mdash;&mdash;是否选择其所有子项 268 3.3.15 GetCellCount方法&mdash;&mdash;获取满足筛选器的单元格数目 269 3.3.16 GetColumn方法&mdash;&mdash;指定子控件的列位置 270 3.3.17 NewRow方法&mdash;&mdash;添加一条新记录 270 3.3.18 RowCount方法&mdash;&mdash;DataGridView中显示的行数 271 3.3.19 Rows属性&mdash;&mdash;DataGridView控件中的所有行 272 3.4 打印类控件 273 3.4.1 CrystalReportViewer控件&mdash;&mdash;水晶报表查看控件 273 3.4.2 Document属性&mdash;&mdash;设置要预览的文档 280 3.4.3 PageSetupDialog组件&mdash;&mdash;配置页面的对话框 281 3.4.4 Print方法&mdash;&mdash;打印当前页面 283 3.4.5 PrintDialog组件&mdash;&mdash;打印对话框 283 3.4.6 PrintDocument组件&mdash;&mdash;设置打印的文档 286 3.4.7 PrinterSettings属性&mdash;&mdash;打印机设置 291 3.4.8 PrintPage事件&mdash;&mdash;当需要为当前页打印的输出时发生 292 3.4.9 PrintPreviewControl组件&mdash;&mdash;按文档打印时的外观显示Print Document组件 292 3.4.10 PrintPreviewDialog组件&mdash;&mdash;显示PrintDocument组件在打印时的外观 295 3.4.11 PrinterSettings类&mdash;&mdash;用来指定有关文档打印方式的信息 297 3.4.12 Zoom属性&mdash;&mdash;指示页面的显示大小 300 3.5 其他常用组件 300 3.5.1 BackgroundWorker组件&mdash;&mdash;在主线程的另一线程上异步执行耗时的操作 300 3.5.2 ErrorProvider控件&mdash;&mdash;检查显示错误信息 302 3.5.3 EventLog组件&mdash;&mdash;连接本地和远程计算机的事件日志 303 3.5.4 HelpProvider组件&mdash;&mdash;将帮助文件与Windows应用程序相关联 306 3.5.5 HScrollBar控件&mdash;&mdash;一个标准Windows水平滚动条 309 3.5.6 Image属性&mdash;&mdash;显示控件上的图像 311 3.5.7 ImageAlign属性&mdash;&mdash;在控件显示的图像的对齐方式 312 3.5.8 ImageFormat类&mdash;&mdash;指定图像的格式 312 3.5.9 ImageList组件&mdash;&mdash;用于存储图像 314 3.5.10 ImageList属性&mdash;&mdash;在控件显示的图像的ImageList 316 3.5.11 Interval属性&mdash;&mdash;设置Timer控件执行的间隔 317 3.5.12 NotifyIcon控件&mdash;&mdash;设置程序的系统托盘图标 317 3.5.13 PerformStep方法&mdash;&mdash;按照Step属性的数量增加进度栏的当前位置 319 3.5.14 PictrueBox控件&mdash;&mdash;用于显示指定的图像 320 3.5.15 Play方法&mdash;&mdash;播放.wav文件 323 3.5.16 ProgressBar控件&mdash;&mdash;进度条 323 3.5.17 SetError方法&mdash;&mdash;设置错误信息 326 3.5.18 SetShowHelp方法&mdash;&mdash;是否显示帮助信息 327 3.5.19 SetToolTip方法&mdash;&mdash;设置提示文本 328 3.5.20 Step属性&mdash;&mdash;增加进度条的当前位置时所根据的数量 328 3.5.21 Stop方法&mdash;&mdash;停止加载网页 329 3.5.22 Tick事件&mdash;&mdash;计时器处于启用状态时发生 330 3.5.23 Timer组件&mdash;&mdash;定期引发事件的组件 330 3.5.24 ToolTip控件&mdash;&mdash;显示提示信息 332 3.5.25 ToolTipIcon属性&mdash;&mdash;提示文本旁显示的图标类型 333 3.5.26 ToolTipText属性&mdash;&mdash;ToolTip显示的文本 334 3.5.27 ToolTipTitle属性&mdash;&mdash;工具提示窗口的标题 334 3.5.28 TrackBar控件&mdash;&mdash;标准的Windows跟踪条 335 3.5.29 Url属性&mdash;&mdash;引用服务说明的URL 337 3.5.30 VscrollBar控件&mdash;&mdash;标准的Windows垂直滚动条 337 3.5.31 WebBrowser控件&mdash;&mdash;在窗体中显示网页 339 3.5.32 Windows Media Player控件&mdash;&mdash;播放常见的音频文件 343 第4章 控件公共属性、方法事件 347 4.1 控件公共属性 347 4.1.1 BackColor属性&mdash;&mdash;设置控件的背景色 347 4.1.2 BackgroudColor属性&mdash;&mdash;设置控件背景色 347 4.1.3 BackgroudImage属性&mdash;&mdash;设置控件背景图像 347 4.1.4 Border属性&mdash;&mdash;控件边框 348 4.1.5 BorderStyle属性&mdash;&mdash;控件的边框样式 349 4.1.6 Bottom属性&mdash;&mdash;控件下边缘与其容器的工作区上边缘之间的距离 349 4.1.7 CanFocus属性&mdash;&mdash;控件是否可以接收焦点 350 4.1.8 Capture属性&mdash;&mdash;控件是否已捕获鼠标 350 4.1.9 Color属性&mdash;&mdash;设置用户选定的颜色 350 4.1.10 Dock属性&mdash;&mdash;控件在窗体中的布局样式 351 4.1.11 Enabled属性&mdash;&mdash;控件是否可用 352 4.1.12 ForeColor属性&mdash;&mdash;设置控件的前景色 352 4.1.13 Handle属性&mdash;&mdash;获取控件绑定的窗口句柄 352 4.1.14 Height属性&mdash;&mdash;设置控件的高度 353 4.1.15 KeyChar属性&mdash;&mdash;设置与按下的键对应的字符 354 4.1.16 KeyValue属性&mdash;&mdash;获取KeyDown或KeyUp事件的键盘值 355 4.1.17 Lines属性&mdash;&mdash;设置多行配置中的文本行 355 4.1.18 Location属性&mdash;&mdash;控件的左上角相对于其容器的左上角的坐标 356 4.1.19 Name属性&mdash;&mdash;控件或实例的名称 356 4.1.20 Parent属性&mdash;&mdash;设置控件的父容器或获取指定子目录的父目录 357 4.1.21 Position属性&mdash;&mdash;设置坐标 358 4.1.22 ReadOnly属性&mdash;&mdash;是否只读 359 4.1.23 Right属性&mdash;&mdash;控件右边缘与其容器的工作区左边缘之间的距离 359 4.1.24 RightToLeft属性&mdash;&mdash;控件的文本从右向左读取 360 4.1.25 ScrollBars属性&mdash;&mdash;滚动条的可见性和位置 360 4.1.26 SizeMode属性&mdash;&mdash;指示如何显示图像 361 4.1.27 Tag属性&mdash;&mdash;窗体或控件的标识 362 4.1.28 Text属性&mdash;&mdash;与控件关联的文本 362 4.1.29 TextAlign 属性&mdash;&mdash;控件上文本的对齐方式 363 4.1.30 Top属性&mdash;&mdash;控件上边缘与其容器的工作区上边缘之间的距离 364 4.1.31 Value属性&mdash;&mdash;辅助性对象的值 364 4.1.32 View属性&mdash;&mdash;项在控件中的显示方式 365 4.1.33 Visible属性&mdash;&mdash;控件是否可见 366 4.1.34 Width属性&mdash;&mdash;控件的宽度 366 4.2 控件公共方法 367 4.2.1 BringToFront方法&mdash;&mdash;将控件Z顺序的前面 367 4.2.2 Focus方法&mdash;&mdash;为控件设置输入焦点 367 4.2.3 GetClipboardContent方法&mdash;&mdash;检索选定单元格内容的格式化值 368 4.2.4 GetParent方法&mdash;&mdash;检索指定路径的父目录 368 4.2.5 Hide方法&mdash;&mdash;隐藏窗体 369 4.2.6 Load方法&mdash;&mdash;加载XML文档 369 4.2.7 LoadFile方法&mdash;&mdash;将文件加载RichTextBox控件中 371 4.2.8 Navigate方法&mdash;&mdash;打开指定的URL地址 372 4.2.9 Refresh方法&mdash;&mdash;重新加载当前的网页 373 4.2.10 SaveAs方法&mdash;&mdash;用新名称或新格式保存文档 373 4.2.11 SaveFile方法&mdash;&mdash;将内容保存文件中 374 4.2.12 Show方法&mdash;&mdash;显示光标或者打开新窗体 375 4.2.13 UpButton方法&mdash;&mdash;按照指定数值递增 376 4.3 控件公共事件 377 4.3.1 Click事件&mdash;&mdash;单击控件时触发该事件 377 4.3.2 Enter事件&mdash;&mdash;光标进入控件时发生 378 4.3.3 KeyDown事件&mdash;&mdash;控件有焦点按下键时发生 378 4.3.4 KeyPress事件&mdash;&mdash;控件有焦点按下键时发生 380 4.3.5 KeyUp事件&mdash;&mdash;控件有焦点释放键时发生 381 4.3.6 Leave事件&mdash;&mdash;输入焦点离开控件时发生 381 4.3.7 MouseClick事件&mdash;&mdash;用户单击控件时发生 382 4.3.8 Navigated事件&mdash;&mdash;加载新文档时发生 383 4.3.9 Paint事件&mdash;&mdash;重绘或更新控件时发生 383 第5章 数据库开发 385 5.1 SQL语言基础 385 5.1.1 AVG聚合函数&mdash;&mdash;返回组中值的平均值 385 5.1.2 CAST函数&mdash;&mdash;数据类型显式转换 385 5.1.3 COUNT函数&mdash;&mdash;返回组中的项的数量 386 5.1.4 Last函数&mdash;&mdash;返回查询结果的最后一个记录 386 5.1.5 MAX函数&mdash;&mdash;返回表达式中的最大值 388 5.1.6 MIN函数&mdash;&mdash;返回表达式中的最小值 388 5.1.7 newid函数&mdash;&mdash;创建uniqueidentifier类型的惟一值 389 5.1.8 SUM函数&mdash;&mdash;返回表达式中所有值的和 389 5.1.9 UPDATE语句&mdash;&mdash;更改表中的现有数据 390 5.2 ADO.NET技术 392 5.2.1 Command对象&mdash;&mdash;对数据源执行增、删、改、查操作 392 5.2.2 CommandText属性&mdash;&mdash;获取设置SQL语句或存储过程 393 5.2.3 CommandTimeout属性&mdash;&mdash;获取或设置错误等待时间 393 5.2.4 CommandType属性&mdash;&mdash;获取或设置如何解释CommandText属性 394 5.2.5 Connection对象&mdash;&mdash;数据库连接对象 394 5.2.6 ConnectionState枚举&mdash;&mdash;数据库连接状态 395 5.2.7 DataAdapter类&mdash;&mdash;数据库桥接器 396 5.2.8 DataMember属性&mdash;&mdash;获取或设置数据源列表或表名称 398 5.2.9 DataReader类&mdash;&mdash;只读数据集 398 5.2.10 DataSet类&mdash;&mdash;数据集 400 5.2.11 DataSource属性&mdash;&mdash;获取或设置数据源 402 5.2.12 ExecuteNonQuery方法&mdash;&mdash;执行SQL语句返回受影响的行数 402 5.2.13 ExecuteReader方法&mdash;&mdash;执行SQL语句返回DataReader对象 403 5.2.14 ExecuteScalar方法&mdash;&mdash;执行SQL语句返回结果集中第1行的第1列 404 5.2.15 Fill方法&mdash;&mdash;填充数据集 405 5.2.16 Merge方法&mdash;&mdash;合数据集 407 5.2.17 Parameters属性&mdash;&mdash;获取SqlParameterCollection 409 5.2.18 ReadXml方法&mdash;&mdash;将XML架构和数据读入数据集 410 5.2.19 SelectCommand属性&mdash;&mdash;获取或设置选择记录命令 411 5.2.20 SQL注入式攻击&mdash;&mdash;利用设计上的漏洞攻击SQL 412 5.2.21 SqlCommand类&mdash;&mdash;SQL执行命令 413 5.2.22 SqlConnection类&mdash;&mdash;SQL数据库连接对象 415 5.2.23 SqlDataAdapter类&mdash;&mdash;SQL数据库桥接器 416 5.2.24 SqlDataReader类&mdash;&mdash;SQL只读数据集 418 5.2.25 Tables属性&mdash;&mdash;获取包含在数据集中的表的集合 421 5.2.26 Update方法&mdash;&mdash;使控件重绘工作区内的无效区域 422 5.2.27 UpdateCommand属性&mdash;&mdash;获取或设置更新记录命令 423 5.2.28 WriteXml方法&mdash;&mdash;将数据集中数据写入XML中 423 5.3 LINQ技术 424 5.3.1 Lambda表达式&mdash;&mdash;匿名函数 424 5.3.2 LINQ技术&mdash;&mdash;语言集成查询 426 5.3.3 LinqToDataSet技术&mdash;&mdash;LINQ操作数据集 427 5.3.4 LinqToObjects技术&mdash;&mdash;LINQ操作数组和集合 429 5.3.5 LinqToSql技术&mdash;&mdash;LINQ操作SQL数据库 431 5.3.6 LinqToXml技术&mdash;&mdash;LINQ操作XML文件 436 5.3.7 var关键字&mdash;&mdash;根据初始化语句推断变量类型 439 第6章 文件、数据流与注册表 441 6.1 文件与I/O数据流 441 6.1.1 ASCII码&mdash;&mdash;键盘的一种表示方式 441 6.1.2 ASCIIEncoding类&mdash;&mdash;ASCII字符编码的操作类 442 6.1.3 Attributes属性&mdash;&mdash;获取和设置文件的属性 443 6.1.4 BinaryReader类&mdash;&mdash;将特定的数据读作二进制值 445 6.1.5 BinaryWriter类&mdash;&mdash;将二进制值写入流中 447 6.1.6 CanRead属性&mdash;&mdash;判断当前流是否支持读写 448 6.1.7 Close方法&mdash;&mdash;释放所有关联的资源 449 6.1.8 Copy方法&mdash;&mdash;文件的复制 450 6.1.9 CopyFile方法&mdash;&mdash;将文件复制新的位置 451 6.1.10 CopyTo方法&mdash;&mdash;将指定的字符串复制字符数组中 452 6.1.11 Create方法&mdash;&mdash;创建文件 455 6.1.12 CreateDirectory方法&mdash;&mdash;创建指定路径中的所有目录 456 6.1.13 CreateText方法&mdash;&mdash;创建或打开文本文件 456 6.1.14 CreationTime属性&mdash;&mdash;获取或设置文件的创建时间 457 6.1.15 CryptoStream类&mdash;&mdash;将数据流连接加密转换的流 457 6.1.16 Delete方法&mdash;&mdash;删除文件 461 6.1.17 Directory类&mdash;&mdash;对文件夹进行操作的类 463 6.1.18 DirectoryEntry类&mdash;&mdash;封装节点或对象 464 6.1.19 DirectoryInfo类&mdash;&mdash;对文件夹进行操作的类 466 6.1.20 DirectoryName属性&mdash;&mdash;获取路径 468 6.1.21 DirectorySearcher组件&mdash;&mdash;执行查找 468 6.1.22 DriveInfo类&mdash;&mdash;驱动器的信息访问 469 6.1.23 Encoding属性&mdash;&mdash;获取编码方式 470 6.1.24 Exists方法&mdash;&mdash;判断文件是否存在 471 6.1.25 Exists属性&mdash;&mdash;判断文件是否存在 472 6.1.26 Extension属性&mdash;&mdash;获取文件扩展名 473 6.1.27 File类&mdash;&mdash;对文件进行操作的类 473 6.1.28 FileAttributes枚举&mdash;&mdash;提供文件和目录的属性 475 6.1.29 FileInfo类&mdash;&mdash;文件的操作类 476 6.1.30 FileName属性&mdash;&mdash;获取或设置文件的名称 478 6.1.31 FileStream类&mdash;&mdash;对文件流操作的类 478 6.1.32 Flush方法&mdash;&mdash;清除流的缓冲区 480 6.1.33 GetBytes方法&mdash;&mdash;将字符串编码设为字节序列 481 6.1.34 GetDirectories方法&mdash;&mdash;获取子目录的名称 482 6.1.35 GetExtension方法&mdash;&mdash;获取路径字符串的扩展名 485 6.1.36 GetFiles方法&mdash;&mdash;获取目录中的文件名称 486 6.1.37 GetFileSystemEntries方法&mdash;&mdash;获取目录中的所有名称 487 6.1.38 GetFileSystemInfos方法&mdash;&mdash;获取所有文件的信息 489 6.1.39 GetStream方法&mdash;&mdash;返回用于发送和接收的数据 491 6.1.40 GetString方法&mdash;&mdash;将字节解码成字符串 491 6.1.41 HasRows属性&mdash;&mdash;指示 OleDbDataReader是否有数据 493 6.1.42 MD5CryptoServiceProvider类&mdash;&mdash;操作MD5的类 493 6.1.43 MemoryStream类&mdash;&mdash;创建其支持存储区为内存的流 495 6.1.44 Move方法&mdash;&mdash;文件的移动 497 6.1.45 MoveNext方法&mdash;&mdash;移动下一个字符 497 6.1.46 MoveTo方法&mdash;&mdash;文件的移动 498 6.1.47 NetworkStream类&mdash;&mdash;网络访问的基础数据流 500 6.1.48 Open方法&mdash;&mdash;打开文件 502 6.1.49 OpenFile方法&mdash;&mdash;以只读方式打开文件 503 6.1.50 OpenText方法&mdash;&mdash;打开UTF-8编码文本文件 504 6.1.51 Path属性&mdash;&mdash;监视的目录的路径 505 6.1.52 Peek方法&mdash;&mdash;返回下一个可用的字符 506 6.1.53 Read方法&mdash;&mdash;读取数据流 507 6.1.54 ReadBytes方法&mdash;&mdash;将指定的字节读入字节数组 508 6.1.55 ReadToEnd方法&mdash;&mdash;从流的当前位置读末尾 509 6.1.56 Stream类&mdash;&mdash;对数据流进行操作的类 510 6.1.57 StreamReader类&mdash;&mdash;数据流的读取类 512 6.1.58 StreamWriter类&mdash;&mdash;数据流的写入类 513 6.1.59 TextReader类&mdash;&mdash;读取连续字符的读取器 515 6.1.60 TextWriter类&mdash;&mdash;编写一个有序字符系列的编写器 516 6.1.61 Write方法&mdash;&mdash;将流写入文件中 517 6.2 注册表技术 521 6.2.1 CreateSubKey方法&mdash;&mdash;创建或打开子项 521 6.2.2 GetValue方法&mdash;&mdash;获取注册表项中的值 522 6.2.3 GetValueNames方法&mdash;&mdash;所有值名称的字符串数组 523 6.2.4 GetSubKeyNames方法&mdash;&mdash;所有子项名称字符串数组 525 6.2.5 OpenSubKey方法&mdash;&mdash;以只读方式检索子项 525 6.2.6 Registry类&mdash;&mdash;注册表操作类 528 6.2.7 RegistryKey类&mdash;&mdash;表示Windows注册表中的项级节点 529 6.2.8 SetValue方法&mdash;&mdash;设置注册表项的指定名称/值对 531 第7章 GDI+绘图技术 532 7.1 GDI+绘图基础 532 7.1.1 Bitmap类&mdash;&mdash;图像对象 532 7.1.2 Cursor类&mdash;&mdash;绘制光标指针图像 533 7.1.3 GDI+&mdash;&mdash;图形图像的绘制 535 7.1.4 Graphics类&mdash;&mdash;绘图类 536 7.1.5 GraphicsPath类&mdash;&mdash;一系列相互连接的直线和曲线 540 7.1.6 Icon类&mdash;&mdash;图标的操作类 542 7.1.7 Image类&mdash;&mdash;图像的操作类 543 7.1.8 LinearGradientBrush类&mdash;&mdash;线性渐变封装Brush 545 7.1.9 Region类&mdash;&mdash;由矩形和路径构成的图形形状的内部 547 7.1.10 SolidBrush类&mdash;&mdash;定义单色画笔 548 7.2 常用绘图方法 549 7.2.1 Draw方法&mdash;&mdash;绘制光标 549 7.2.2 DrawArc方法&mdash;&mdash;绘制圆弧 550 7.2.3 DrawBezier方法&mdash;&mdash;绘制贝塞尔样条 551 7.2.4 DrawEllipse方法&mdash;&mdash;绘制椭圆 553 7.2.5 DrawImage方法&mdash;&mdash;绘制Image图像 555 7.2.6 DrawLine方法&mdash;&mdash;绘制直线 556 7.2.7 DrawPath方法&mdash;&mdash;绘制GraphicsPath图形路径 558 7.2.8 DrawPie方法&mdash;&mdash;绘制扇形 558 7.2.9 DrawPolygon方法&mdash;&mdash;绘制多边形 560 7.2.10 DrawRectangle方法&mdash;&mdash;绘制矩形 561 7.2.11 DrawString方法&mdash;&mdash;绘制文本字符串 562 7.3 常用填充图像方法 565 7.3.1 FillEllipse方法&mdash;&mdash;填充椭圆 565 7.3.2 FillPath方法&mdash;&mdash;填充GraphicsPath的内部 566 7.3.3 FillPie方法&mdash;&mdash;填充扇形 567 7.3.4 FillPolygon方法&mdash;&mdash;填充多边形 568 7.3.5 FillRectangle方法&mdash;&mdash;填充矩形框 570 7.3.6 FillRegion方法&mdash;&mdash;填充一个区域 572 7.4 其他常用方法 572 7.4.1 Clone方法&mdash;&mdash;创建Bitmap对象的某个部分的副本 572 7.4.2 CreateGraphics方法&mdash;&mdash;创建Graphics对象 574 7.4.3 FromArgb方法&mdash;&mdash;从ARGB值创建Color结构 574 7.4.4 FromFile方法&mdash;&mdash;从指定的文件创建Image 577 7.4.5 FromImage方法&mdash;&mdash;从Image创建新的Graphics对象 578 7.4.6 FromStream方法&mdash;&mdash;数据流创建Image 578 7.4.7 GetPixel方法&mdash;&mdash;获取图像中的像素颜色 580 7.4.8 GetThumbnailImage方法&mdash;&mdash;Image的缩略图 581 7.4.9 Save方法&mdash;&mdash;将图片以文件的形式进行复制 583 7.4.10 SetPixel方法&mdash;&mdash;设置图像中的像素颜色 583 7.4.11 Transform方法&mdash;&mdash;对路径的数据点进行变换 584 第8章 C#高级编程 586 8.1 网络编程技术 586 8.1.1 Accept方法&mdash;&mdash;为新建连接创建新的Socket对象 586 8.1.2 AcceptSocket方法&mdash;&mdash;接收挂起的连接请求 586 8.1.3 BeginConnect方法&mdash;&mdash;开始远程主机连接的异步请求 587 8.1.4 Dns类&mdash;&mdash;从Internet域名系统检索特定主机的信息 588 8.1.5 GetHostAddresses方法&mdash;&mdash;返回主机的IP地址 589 8.1.6 GetHostByAddress方法&mdash;&mdash;创建IPHostEntry实例 590 8.1.7 GetHostByName方法&mdash;&mdash;获取指定DNS主机名的信息 591 8.1.8 GetHostName方法&mdash;&mdash;获取本地计算机的主机名 592 8.1.9 IPEndPoint类&mdash;&mdash;将网络端点表示为IP地址和端口号 592 8.1.10 IPHostEntry类&mdash;&mdash;为主机地址信息提供容器类 594 8.1.11 Listen方法&mdash;&mdash;将Socket置于侦听状态 596 8.1.12 MachineName属性&mdash;&mdash;读取或写入事件的计算机名称 596 8.1.13 MailMessage类&mdash;&mdash;邮件的操作类 597 8.1.14 Net send命令&mdash;&mdash;用net send命令进行发送 598 8.1.15 Net use命令&mdash;&mdash;实现映射网络驱动器 599 8.1.16 Ping类&mdash;&mdash;网络访问远程计算机的操作类 601 8.1.17 POP3协议&mdash;&mdash;POP邮件的操作类 603 8.1.18 Receive方法&mdash;&mdash;由远程主机发送的UDP数据报 608 8.1.19 Send方法&mdash;&mdash;将数据发送连接的Socket 609 8.1.20 SerialPort类&mdash;&mdash;控制串行端口文件资源 610 8.1.21 SMTP协议&mdash;&mdash;进行邮件的传输 612 8.1.22 SmtpClient类&mdash;&mdash;将电子邮件发送SMTP服务器 614 8.1.23 Socket类&mdash;&mdash;网络通信的操作类 616 8.1.24 TcpClient类&mdash;&mdash;为TCP网络服务提供客户端连接 618 8.1.25 TcpListener类&mdash;&mdash;从TCP网络客户端侦听连接 619 8.1.26 UdpClient类&mdash;&mdash;用户数据报(UDP)网络服务 620 8.1.27 WebClient类&mdash;&mdash;URI标识的资源发送和接收 623 8.1.28 WebRequest类&mdash;&mdash;访问Internet数据 625 8.1.29 WebResponse类&mdash;&mdash;协议特定的响应类 629 8.2 多线程编程 630 8.2.1 Abort方法&mdash;&mdash;终止线程 630 8.2.2 BeginInvoke方法&mdash;&mdash;线程上异步执行委托 631 8.2.3 EndInvoke方法&mdash;&mdash;异步操作的返回值 632 8.2.4 Join方法&mdash;&mdash;确保线程已终止 633 8.2.5 Kill方法&mdash;&mdash;强制关闭进程 633 8.2.6 Process类&mdash;&mdash;对正在计算机上运行的进程的访问 635 8.2.7 Sleep方法&mdash;&mdash;线程挂起 640 8.2.8 Start方法&mdash;&mdash;启动进程 640 8.2.9 Thread类&mdash;&mdash;创建控制线程的类 642 8.2.10 ThreadState属性&mdash;&mdash;获取当前线程的状态 645 8.3 WMI技术&mdash;&mdash;系统管理 646 8.3.1 MainWindowTitle属性&mdash;&mdash;获取进程的主窗口标题 646 8.3.2 ManagementClass类&mdash;&mdash;公共信息模型管理类 647 8.3.3 ManagementObject类&mdash;&mdash;表示WMI实例 648 8.3.4 ManagementObjectSearcher类&mdash;&mdash;查询检索管理对象 650 8.3.5 ManagementScope类&mdash;&mdash;管理操作的范围 651 8.3.6 Microsoft.Win32命名空间&mdash;&mdash;操作注册表类 652 8.3.7 WndProc方法&mdash;&mdash;处理Windows消息 654 8.4 其他高级技术 655 8.4.1 Children属性&mdash;&mdash;获取节点的子项 655 8.4.2 COM+服务&mdash;&mdash;为类的实例提供服务 655 8.4.3 DirectShow技术&mdash;&mdash;流媒体处理的一个开发包 656 8.4.4 DLL组件&mdash;&mdash;动态链接库 663 8.4.5 MVC开发模式&mdash;&mdash;模型视图控制器 664 8.4.6 VFW技术&mdash;&mdash;视频应用程序提供的软件工具包 666 8.4.7 XML&mdash;&mdash;定义其他标识语言的元标识语言 668 8.4.8 XmlReader类&mdash;&mdash;XML读取器 670 8.4.9 XmlWriter类&mdash;&mdash;XML编写器 673 附录&mdash;&mdash;字母索引 676
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

Aurora_木迦

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值