C#窗口编程(四)

本文介绍了WindowsForms中ProgressBar控件的Minimum、Maximum、Value和Step属性,以及如何结合Timer实现进度条动态更新。此外,还详细讲解了TreeView控件的节点添加和遍历,以及如何设置节点图片和复选框功能。最后,展示了ToolTip控件的属性设置和使用实例。
摘要由CSDN通过智能技术生成

ProgressBar控件和定时器

ProgressBar类里的Minimum设置最小值,Maximum设置最大值,这两个决定进程条值(Value)范围。

Value表示进程条当前的值,也就是位置。

其中关于Minimum和Maximum怎么样去设置,没有多少规定,关键是看自己怎么看待。

比如,我可以设置Minimum为100,Maximum为200,那么Value设置为150的时候,进程条进度显示为一半。

ProgressBar还有个属性成员Step,这个属性跟PerformStep方法有关的,Step指定当执行一次PerformStep方法,Value值增加多少。

 定时器

这里使用的是Forms命名空间里的Timer类来定时,关于定时器概念在MFC中也有,这里不说了。模式都是一样的,只是“形”不一样而已。

直接看代码吧,关键之处都有注释。

例子:(结合ProgressBar控件)

先设置好ProgressBar控件属性

 this.progressBar1.Minimum = 0;
 this.progressBar1.Maximum = 255;
 this.progressBar1.Value = 0;
 this.progressBar1.Step = 10;

在Form1类里定义一个Timer类对象

  //创建定时器
 private System.Windows.Forms.Timer myTimer = new System.Windows.Forms.Timer();

然后:

//定义定时器处理函数
private void TimerEventProcessor(Object myObject, EventArgs myEventArgs)
{
 //增加进度条的值,加载进度条
 progressBar1.PerformStep();
 //进度条加裁完成
 if (progressBar1.Value >= 255)
 {
   myTimer.Stop();//停止定时
   MessageBox.Show("完成!");
  }
}

在按钮单击事件处理函数中开始定时:

private void button1_Click(object sender, EventArgs e)
 {
 //添加定时器处理函数
 myTimer.Tick += new EventHandler(TimerEventProcessor);
 //每300毫秒执行一次函数
 myTimer.Interval = 300;
 //开始定时
 myTimer.Start();
 }

运行效果:

TreeView树控件

TreeView类里的Nodes用于添加树控件的节点,调用Nodes.Add即可添加。看下例代码:

 //新建一个节点
 System.Windows.Forms.TreeNode node1 = new System.Windows.Forms.TreeNode("歌曲");
 //下两个节点没有子节点,直接添加了
 node1.Nodes.Add("和谐1");
 node1.Nodes.Add("最心疼的人只有你");
 //新建第二节点,属于node1节点下
 System.Windows.Forms.TreeNode node2 = new System.Windows.Forms.TreeNode("经典歌曲");
 //将“和谐2”添加到node2节点下
 node2.Nodes.Add("和谐2");//如果想在node2添加一个有子项的节点,只需再新建添加

 node1.Nodes.Add(node2);//将“经典歌曲”这个结点添加到node1("歌曲")这个节点下。

 treeView1.Nodes.Add(node1);//将node1节点添加到树控件下

对应的树控件如下图:

 获取选中节点的文本:treeView1.SelectedNode.Text

添加节点图片,遍历所有节点,获取被核记的节点
添加图片:首先跟ListView控件一样,新建一个ImageList对象,再添加图片。然后把它赋给控件类对应的ImageList。
上面我设置节点文本,是通过构造函数把字符串传进去的,其实也可以设置节点属性Text,也就是直接赋值给
node1.Text来设置节点项文本。那么相应的node1下还有其它属性,这些属性就是设置节点对应的图片了。
ImageIndex存储节点显示的图片索引SelectedImageIndex存储节点被选中时显示的图片索引。
看下面示例代码:
 //新建图片集ImageList
 System.Windows.Forms.ImageList imgList = new System.Windows.Forms.ImageList();
 //32位颜色
 imgList.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
 //添加图标
 imgList.Images.Add(new System.Drawing.Icon("d:\\Image\\1.ico"));
 imgList.Images.Add(new System.Drawing.Icon("d:\\Image\\2.ico"));
 imgList.Images.Add(new System.Drawing.Icon("d:\\Image\\3.ico"));
 //将imgList赋值给控件,引用
 treeView1.ImageList = imgList;
 //设置节点对应的图片
 node1.ImageIndex=0;
 node1.SelectedImageIndex=1;
 node2.ImageIndex=2;
 node2.SelectedImageIndex=2;
接下来,看一下复选框的应用
//先显示复选框,允许复选
this.treeView1.CheckBoxes = true;
//设置项高度
this.treeView1.ItemHeight = 20;
显示了复选框,我们就得遍历所有结点,获取被选中的节点文本
需要了解的东西:
TreeNodeCollection类是TreeNode类的集合,treeView.Nodes是TreeNodeCollection类对象,TreeNodeCollection里的
Count记录树控件有多少根节点(没有父节点的节点),而treeView.Node[0]它的类型是TreeNode(索引返回值是TreeNode类型),
所以treeView.Node[0]可以访问TreeNode类里的属性成员和方法,例如GetNodeCount这个方法,
这个方法有一个布尔参数,false只获取同级子节点的数量,true获取一个节点下的所有节点。
如果返回值是0的话,表明这个节点没有子节点。这个方法可以判一个节点是不是父节点。
TreeNode类有一个TreeNodeCollection类对象Nodes,用来记录节点下的子节点。跟TreeView类下的Nodes是一样的。

遍历所有结点,先定义一个递归函数,以TreeNodeCollection为参数类型,在函数里判断TreeNodeCollection类里的
Count是多少,然后再用GetNodeCount函数依次判断每个节点是否有子节点,如果有,递归调用函数。将这个节点的
Nodes传进去。

看下列代码:

 private String GetCheckText(System.Windows.Forms.TreeNodeCollection Nodes)
        {
            String strText = "";
            for (int i = 0; i < Nodes.Count; i++)
            {
                //有子项
                if (Nodes[i].GetNodeCount(false) > 0)
                {
                    //被勾选
                    if (Nodes[i].Checked == true)
                    {
                        strText += Nodes[i].Text;
                        strText += "\n";
                    }
                     //递归调用
                    strText += GetCheckText(Nodes[i].Nodes);
                }
                    //如果复选框被选中
                else if (Nodes[i].Checked == true)
                {
                    strText += Nodes[i].Text;
                    strText += "\n";
                }
            }
            //返回Nodes集合节点中所有文本(包括所有子节点的)
            return strText;
        }
        private void button1_Click(object sender, EventArgs e)
        {

         //调用GetCheckText函数
            String str = GetCheckText(treeView1.Nodes);
            //输出所有选中节点文本
            MessageBox.Show(str);
        }

运行效果:

ToolTip设置控件工具文本提示
先来看ToolTip类里的几个属性:(毫秒为单位)
AutoPopDelay这个指定工具文本提示栏所显示的时间。比如设置2000,当提示栏出现后,再过两秒就会消失。
InitialDelay这个指定当鼠标停留在控件多久,才显示文本提示栏.
ReshowDelay这个指定鼠标离开控件后,过多久提示栏消失(如果提示栏出现)

ShowAlways这个是一个布尔类型,为true时,表示即使当前窗口不是激活状态(最前端窗口),鼠标停留在对应的控件时,依然会显示工具提示栏。
而ToolTip类里的SetToolTip方法,就是用来设置其关联的控件和要显示的文本了。一个按钮控件的使用示例:
toolTip1.SetToolTip(this.button1, "这个是我的工\n具文本提示");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bczheng1

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

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值