第11章 Windows应用程序高级控件

来源:互联网 发布:合肥优化外包公司 编辑:程序博客网 时间:2024/05/22 03:48

一、存储图像控件(ImageList控件)
1  在ImageList控件中添加图像

 

代码:

        private void Form1_Load(object sender, EventArgs e)
        {
            string path = "01.jpg";
            string path2 = "02.jpg";
            Image Mimg = Image.FromFile(path, true); //创建一个Image对象
            Image Mimg2 = Image.FromFile(path2, true);
            imageList1.Images.Add(Mimg);      //使用Images属性的Add方法向控件中添加图片
            imageList1.Images.Add(Mimg2);
            imageList1.ImageSize = new Size(216, 138);//设置图片大小
        }

        private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.Image = imageList1.Images[0]; //pictureBox的图片是imageList中索引为0的图片
        }

        private void button2_Click(object sender, EventArgs e)
        {
            pictureBox1.Image=imageList1.Images[1];
        }


2  在ImageList控件中移除图像

            imageList1.Images.RemoveAt(0);  //移除imageList1中的单张图片
            imageList1.Images.Clear();   //移除imageList1中的全部图片

 

二、列表视图控件(listView控件)

1  在ListView控件中添加/移除项

代码:

        private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "")
            {
                MessageBox.Show("项目不能为空");
            }
            else
            {
                listView1.Items.Add(textBox1.Text);
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (listView1.SelectedItems.Count == 0)   //选择项目数
            {
                MessageBox.Show("请选择要删除的项");
            }
            else
            {
                listView1.Items.RemoveAt(listView1.SelectedItems[0].Index);  //SelectedItems[0].Index选择项目的索引
                listView1.SelectedItems.Clear();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (listView1.Items.Count == 0)              //项目数
            {
                MessageBox.Show("项目中已经没有项目");
            }
            else
            {
                listView1.Items.Clear();
            }
        }


2  选择ListView控件中的项

            listView1.Items.Add("明日科技");   //使用Add方法向控件中添加项目
            listView1.Items.Add("C#编程词典");   //使用Add方法向控件中添加项目
            listView1.Items.Add("C#从基础到项目实战"); //使用Add方法向控件中添加项目
            listView1.Items[2].Selected = true;   //使用Selected方法选中第3项


3  为ListView控件中的项添加图标

            listView1.LargeImageList = imageList1;  //大图标在控件中显示使用的imageList
            imageList1.ImageSize = new Size(37, 36); //图像列表中图片的大小
            imageList1.Images.Add(Image.FromFile("01.png"));
            imageList1.Images.Add(Image.FromFile("02.png"));
            listView1.SmallImageList = imageList1;  //小图标在控件中显示使用的imageList
            listView1.Items.Add("明日科技");
            listView1.Items.Add("C#编程词典");
            listView1.Items[0].ImageIndex = 0;  //显示图像的索引
            listView1.Items[1].ImageIndex = 1;

4  在ListView控件中启用平铺视图

 

            listView1.View = View.Tile;  //项在控件中的显示方式
            listView1.LargeImageList = imageList1; //项大图标显示使用的图片列表imageList
            //向imageList1控件中添加两张图片
            imageList1.Images.Add(Image.FromFile("1.bmp"));
            imageList1.Images.Add(Image.FromFile("2.bmp"));
            //向控件中添加项目
            listView1.Items.Add("明日科技");
            listView1.Items.Add("C#编程词典");
            listView1.Items.Add("C#从基础到项目实战");
            listView1.Items.Add("C#项目开发全程实录");
            listView1.Items.Add("C#开发典型模块大全");
            //设置控件中项目的图标
            listView1.Items[0].ImageIndex = 0;
            listView1.Items[1].ImageIndex = 1;
            listView1.Items[2].ImageIndex = 0;
            listView1.Items[3].ImageIndex = 1;
            listView1.Items[4].ImageIndex = 0;
            listView1.TileSize = new Size(200, 50);//设置listView1控件的TileSize属性

5  为ListView控件中的项分组

             //设置listView1控件的View属性,设置样式
            listView1.View = View.SmallIcon;
            //为listView1建立两个组
            listView1.Groups.Add(new ListViewGroup("名称", HorizontalAlignment.Left));
            listView1.Groups.Add(new ListViewGroup("类别", HorizontalAlignment.Left));
            //向控件中添加项目
            listView1.Items.Add("明日科技");
            listView1.Items.Add("C#编程词典");
            listView1.Items.Add("C#从基础到项目实战");
            listView1.Items.Add("公司");
            listView1.Items.Add("软件");
            listView1.Items.Add("图书");
            //将listView1控件中索引是0、1和2的项添加到第一个分组
            listView1.Items[0].Group = listView1.Groups[0];
            listView1.Items[1].Group = listView1.Groups[0];
            listView1.Items[2].Group = listView1.Groups[0];
            //将listView1控件中索引是3、4和5的项添加到第二个分组
            listView1.Items[3].Group = listView1.Groups[1];
            listView1.Items[4].Group = listView1.Groups[1];
            listView1.Items[5].Group = listView1.Groups[1];

 6.设置如下效果

 

属性设置:

view:Details

Columns

 

三.  树控件(TreeView控件)
3.1  添加和删除树节点

 

        private void Form1_Load(object sender, EventArgs e)
        {
            //建立一个父节点
            TreeNode tn1 = treeView1.Nodes.Add("名称");
            //建立3个子节点
            TreeNode Ntn1 = new TreeNode("明日科技");
            TreeNode Ntn2 = new TreeNode("C#编程词典");
            TreeNode Ntn3 = new TreeNode("C#从基础到项目实战");
            //将这3个子节点添加到父节点中
            tn1.Nodes.Add(Ntn1);
            tn1.Nodes.Add(Ntn2);
            tn1.Nodes.Add(Ntn3);
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //如果用户选择了“名称”证明没有选择要删除的子节点
            if (treeView1.SelectedNode.Text == "名称")
            {
                MessageBox.Show("请选择要删除的子节点"); //弹出提示
            }
            else
            {
                treeView1.Nodes.Remove(treeView1.SelectedNode);//使用Remove方法移除选择项
            }
        }

3.2  获取树控件中选中的节点
 

 

        private void Form1_Load(object sender, EventArgs e)
        {
            //建立一个父节点
            TreeNode tn1 = treeView1.Nodes.Add("名称");
            //建立3个子节点
            TreeNode Ntn1 = new TreeNode("明日科技");
            TreeNode Ntn2 = new TreeNode("C#编程词典");
            TreeNode Ntn3 = new TreeNode("C#从基础到项目实战");
            //将3个子节点添加到父节点中
            tn1.Nodes.Add(Ntn1);
            tn1.Nodes.Add(Ntn2);
            tn1.Nodes.Add(Ntn3);
        }
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            label1.Text = "当前选中的节点:" + e.Node.Text;
        }

3.3  为树控件中的节点设置图标

 

            TreeNode tn1 = treeView1.Nodes.Add("组织结构");
            TreeNode Ntn1 = new TreeNode("C#部门");
            TreeNode Ntn2 = new TreeNode("ASP.NET部门");
            TreeNode Ntn3 = new TreeNode("VB部门");
            tn1.Nodes.Add(Ntn1);
            tn1.Nodes.Add(Ntn2);
            tn1.Nodes.Add(Ntn3);
            imageList1.Images.Add(Image.FromFile("1.png"));
            imageList1.Images.Add(Image.FromFile("2.png"));
            treeView1.ImageList = imageList1;
            imageList1.ImageSize = new Size(16,16);
            treeView1.ImageIndex = 0;
            treeView1.SelectedImageIndex = 1;

 

四  日期选择器控件(DateTimePicker控件)
4.1  使用DateTimePicker控件显示时间

 

 dateTimePicker1.Format = DateTimePickerFormat.Time; //设置控件中显示为时间格式
 textBox1.Text = dateTimePicker1.Text;  //使用文本框获取控件显示的时间


4.2  使用DateTimePicker控件以自定义格式显示日期

dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = "MMMM dd, yyyy - dddd";
label1.Text = dateTimePicker1.Text;

 

示例:

                    DateTimePicker tb = new DateTimePicker();
                    tb.Name = ds.Tables[0].Rows[i]["Id"].ToString();

                    tb.Format = DateTimePickerFormat.Custom;
                    tb.CustomFormat = " ";  //默认为空


                    if (ds.Tables[0].Rows[i]["ControlValue"].ToString() != "")
                    {
                        tb.CustomFormat = "yyyy-MM-dd";
                        tb.Value = DateTime.Parse(ds.Tables[0].Rows[i]["ControlValue"].ToString());//给时间控件赋值   
    
                    }

                    tb.ValueChanged += new EventHandler(DateTimePikerValueChanged);//事件



        private void DateTimePikerValueChanged(object sender, EventArgs e)
        {
            DateTimePicker dtp = (DateTimePicker)sender;
            dtp.CustomFormat = "yyyy-MM-dd";
        }



4.3  返回DateTimePicker控件中选择的日期

 

 

//使用控件的Text属性获取当前控件选择的日期
textBox1.Text = dateTimePicker1.Text;
//使用Value属性的Year方法获取选择日期的年
textBox2.Text = dateTimePicker1.Value.Year.ToString();
//使用Value属性的Year方法获取选择日期的月
textBox3.Text = dateTimePicker1.Value.Month.ToString();
//使用Value属性的Year方法获取选择日期的日
 textBox4.Text = dateTimePicker1.Value.Day.ToString();

 

 

五. 月历控件(MonthCalendar控件)
5.1  更改MonthCalendar控件的外观

 

monthCalendar1.TitleBackColor = System.Drawing.Color.Blue;//控件的标题背景为蓝色
monthCalendar1.TrailingForeColor = System.Drawing.Color.Red;//设控件其它月的日期颜色为红色
monthCalendar1.TitleForeColor = System.Drawing.Color.Yellow; //标题上的文字为黄色

 

monthCalendar1.ShowWeekNumbers = true;  //显示周数


5.2  在MonthCalendar控件中显示多个月份

 

monthCalendar1.ShowWeekNumbers = true;


5.3  在MonthCalendar控件中以粗体显示特定日期

 

DateTime myVacation1 = new DateTime(2011, 5, 20);   //实例化DateTime类,使其值为2009年3月20号
monthCalendar1.AddBoldedDate(myVacation1);     //使用AddBoldedDate方法在月历中将2009年3月20号以粗体显示
monthCalendar1.UpdateBoldedDates();      //调用UpdateBoldedDates方法重绘粗体格式的日期


5.4  在MonthCalendar控件中选择日期范围:但其选择范围仅限一周(按住shift键用鼠标点击范围)

 

        private void Form1_Load(object sender, EventArgs e)
        {
            //获取控件当前的日期和时间
            textBox1.Text = monthCalendar1.TodayDate.ToString();
        }
        private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
        {
            //通过SelectionStart属性获取用户选择的起始日期
            textBox2.Text = monthCalendar1.SelectionStart.ToString();
            //通过SelectionEnd属性获取用户选择的结束日期
            textBox3.Text = monthCalendar1.SelectionEnd.ToString();
        }

 

六. 其他高级控件

6.1  使用ErrorProvider控件验证文本框输入

 

 

 

测试效果

 

代码:

        private int a, b, c;

          //Validating 在控件验证时发生
        private void textBox1_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (textBox1.Text == "")   //判断是否输入商品名称
            {
                errorProvider1.SetError(textBox1, "不能为空");//如果没有输入则激活errorProvider1控件
            }
            else
            {
                errorProvider1.SetError(textBox1, "");// errorProvider1控件不显示消息
                a = 1;       //将a赋值为1
            }
        }


        private void textBox2_Validating(object sender, CancelEventArgs e)
        {
            if (textBox2.Text == "")   //判断是否输入订货数量
            {
                errorProvider2.SetError(textBox2, "不能为空");//设置errorProvider2的错误提示
            }
            else
            {
                try
                {
                    int x = Int32.Parse(textBox2.Text);//判断是否输入数字,如果不是数字会出现异常
                    errorProvider2.SetError(textBox2, "");// errorProvider2控件不显示任何错误信息
                    b = 1;       //将b赋值为1
                }
                catch
                {
                    //如果出现异常,设置errorProvider2控件的错误信息
                    errorProvider2.SetError(textBox2, "请输入一个数");
                }
            }
        }


        private void textBox3_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (textBox3.Text == "")     //判断是否输入订货数量
            {
                errorProvider3.SetError(textBox3, "不能为空");//设置errorProvider3显示的错误消息
            }
            else
            {
                errorProvider3.SetError(textBox3, "");// errorProvider3控件不显示任何消息
                c = 1;        //将c赋值为1
            }
        }


        private void button2_Click(object sender, EventArgs e)
        {
            //清空所有文本框
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
        }


        private void button1_Click(object sender, EventArgs e)
        {
            if (a + b + c == 3)      //判断a、b和c的和是否等于3
            {
                //弹出提示
                MessageBox.Show("数据录入成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

 

 


6.2  使用HelpProvider控件调用帮助文件(按“F1”打开帮助文件)

 

string strPath = "helpPage.htm";
helpProvider1.HelpNamespace = strPath; //设置帮助文件的路径
helpProvider1.SetShowHelp(this, true); //指定是否显示指定控件的帮助信息

 

6.3  使用Timer控件设置时间间隔

示例:自动变化的时间

 

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000; //时间间隔为1秒
        }

        private void timer1_Tick(object sender, EventArgs e)  //Tick:指定的时间间隔时发生
        {
            textBox1.Text = DateTime.Now.ToString();//获取系统当前日期(当计数器开始时,1秒自动获取日期
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "开始")
            {
                timer1.Start();    //启动计数器
                button1.Text = "停止";
            }
            else
            {
                timer1.Stop();    //停止计数器
                button1.Text = "开始";
            }
        }


6.4  使用ProgressBar控件显示程序运行进度条

 

        private void button1_Click(object sender, EventArgs e)
        {
            progressBar1.Value = 0;  //设置进度条的初始值
            progressBar1.Minimum = 0;//设置progressBar1控件的Minimum值为0
            progressBar1.Maximum = 500;//设置progressBar1的Maximum值为500
            progressBar1.Step = 1;//设置progressBar1的增值为1
            for (int i=0; i < 500; i++)
            {
                progressBar1.PerformStep();//使用PerformStep方法按Step值递增
                textBox1.Text = "进度值:" + progressBar1.Value.ToString();
            }
        }