业余学过几年FoxPro,从未接触过C#,这几天心血来潮,想在C#中做一个抽屉式导航菜单,却被控件的Dock属性搞得晕头转向,经过一番摸索后终于成功了。当然,这只是一个雏形,新手可以看一下,也请各位高手莫笑话,并能提出改进意见,谢谢!
一、准备工作:
1、一个panel控件,命名为panel1;
2、若干button控件,分别命名为button1,button2, button3.....,高度全部为25(
重要!一定要设成同样的高度!),TabIndex属性分别为0,1,2,3(
非常重要!一定要从0开始按顺序递增,至于为什么,后面你自然明白),调整布局,如图一:
3、打开窗体的Designer.cs,从上至下修改为你想要的顺序,如button1,button2, button3,.....以此类推(
非常重要!从上至下的顺序要与图一的布局完全一致,不能颠倒,至于为什么,你研究一下控件的Dock属性就明白了),如图二:
二、在button控件Click事件中写下以下代码:
int myHeight = 25;//假设Button高度为25,可自行定义,但要求全部同高
int myIndex = this.panel1.Controls.IndexOf((Button)sender);//获取当前控件索引
foreach (Control myButton in this.panel1.Controls)//遍历所有控件
{
if (myButton.TabIndex <= myIndex)
{
myButton.Dock = DockStyle.None;//先清除Dock属性(这一步很重要)
myButton.Top = myButton.TabIndex * myHeight;//重新定义Top值
}
else
{
myButton.Dock = DockStyle.Bottom;//设置Dock属性:置底
}
}