l treeView控件
l 代码生成控件
l 主菜单与上下文菜单
l 托盘的实现
1.textBox1.Update(); 使桌面快速重绘
Stopwatch watch =new Stopwatch();
watch.Start();
for (int i = 0; i < 100; i++)
{
textBox1.Text = i.ToString();
textBox1.Update();
}
watch.Stop();
MessageBox.Show(string.Format("耗时:{0}", watch.Elapsed.Milliseconds));
可通过创建Stopwatch类的对象,调用start和stop方法查看消耗时间。
2.string path =Application.StartupPath + "\\Sample Pictures\\" + i.ToString() + ".jpg"; //获取图片路径
Application.StartupPath //静态属性获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。
3.y表示年 M表示月 d表示日 HH表示24小时进制 m表示分 s表示秒
DateTime.Now.ToString("mm-ss"); 获得当前分和秒
DateTime.Now.ToString("yyyy-MM"); 获得当前年月
以此类推。。。
4.Timer组件
Timer组件(常用于有时间间隔发生事件的程序,如切换图片的屏幕保护)
设定interval来设定间隔时间(要求enabled设定为true)
5.treeView控件(树结构)
该控件用于添加分层集合,每一项都是一个节点(Node),它是一个TreeNode类的对象。
属性:
Nodes 用于设定每个节点,每个节点也都有该属性
HideSelection 当控件没有焦点时,从选中节点处移除突出显示。值设为false时,移除焦点,选中项也会有灰色阴影。
SelectedNode 获取选中项,不选中时值为null,调用treeView控件的selectedNode属性。
1)treeView1.SelectedNode.Text;获取选中项文本
2)treeView1.SelectedNode.Nodes.Add(textBox1.Text);向选中的节点子集添加节点。
3)treeView1.ExpandAll(); 展开所有子节点
treeView1.CollapseAll(); 折叠所有子节点
4) treeView1.SelectedNode.Toggle(); 切换该节点集的状态(展开,或者折叠)
treeView1.SelectedNode.Collapse(); 只折叠该节点集
treeView1.SelectedNode.ExpandAll(); 展开该节点集所有节点
treeView1.SelectedNode.Expand(); 展开该节点集(不展开孙子集)
需要先判断SelectedNode是否为空。
5) treeView1.SelectedNode.Remove(); 删除选中节点
6)在包含checkboxes的treeView中,可以设定afterchecked事件,让子节点被选中时,同时选中它的所有子节点。
private void treeView1_AfterCheck(object sender,TreeViewEventArgs e)
{
foreach (TreeNode tnin e.Node.Nodes)
{
tn.Checked = e.Node.Checked;
}
}
7)设定树结构的节点图表时,需要关联imagelist组件。
6.其他的控件属性
checkBox控件
Checked 设定选中状态(值为true或false)也可以直接设定checkState属性。(unchecked,checked,indeterminate(子项没全部选中))
GroupBox控件
分组控件
RadioButton控件
单选按钮
设定一组单选按钮时,用groupbox控件对其进行分组。
ProgressBar控件
进度条
属性 Maximum设定进度条的最大值,Minimum设定进度条的最小值。Value表示当前进度条的位置。
运算时,通过对Value的赋值来使进度条缓慢行进,但是要注意,运算表达式中要有double类型参与,因为int类型的数字运算,会让Value的值一直为零。参如下例子:
void GetAnswer()
{
for (int i = 0; i <= 50000; i++)
{
txtShow.Text = i.ToString();
Application.DoEvents();
progressBar1.Value =(int)( (1.0*i / 50000) * 100); //先用double类型运算,再用int强转
}
}
private void button1_Click(object sender,EventArgs e)
{
Thread threadFirst = new Thread(GetAnswer);
threadFirst.Start();
}
dateTimePicter 控件
日期选择。
hScorllBar 水平滚动条
vScorllbar 垂直滚动条
ToolTip 鼠标指针移动到控件上时显示的信息。
TrackBar 单线滚动条
WebBrowser 浏览器控件
TabControl 选项卡控件
7.代码生成控件
Winform中的每个控件都可以看做类的对象,所以我们可以通过实例类来产生控件,甚至包括它的各种事件(以委托的方式传递方法,形成事件)。
例如: //窗体加载时生成按钮和事件
private void Form1_Load(object sender,EventArgs e)
{
for (int i = 0; i < 15; i++)
{
//创建对象
Button btn = newButton();
//给属性赋值
btn.Name = "btn" + i.ToString();
btn.Text = "按钮" + (i+1).ToString();
btn.Size = new Size(60, 60);
btn.Location = new Point(50 + i % 5 * 100, 50 + i/5* 110);
this.Controls.Add(btn);
//传递委托生成事件
btn.Click +=new EventHandler(MyClick);
}
}
//委托方法
private void MyClick(object sender,EventArgs e)
{
Button btn=(Button)sender;
MessageBox.Show("点击了"+btn.Text);
}
8.主菜单与上下文菜单
MenuStrip组件 主菜单
属性:ShortcutKeys 设定每项的快捷键
ContextMenuStrip组件 上下文菜单
为每个控件设定上下文菜单,都可以设置该控件的ContextMenuStrip属性来选择。
ToolStrip组件 工具栏菜单
也可以在工具栏右键直接插入标准项。
StatusStrip组件 状态栏菜单(窗口最下边)
9.托盘(桌面右下角程序小图标)
notifyIcon组件与contextMenuStrip组件配合使用,主要有单击,双击改变程序最大化最小化等事件等。