怎样使用C#的控件
2017-08-07 · 知道合伙人软件行家
看你是第几个阶段的用户。
如果只是简单地试用一下,从工具箱上直接拖放就行,如果你要把UI设计完美一点,有一些自己创意或者考虑到分辨率那就需要用实例去创建控件,如同我们在java中一样,如何用实例去创建控件?简单举例,我创建一个像listView样式的菜单:
void CreactControl()//创建控件初始化
{
for(int i=0;i<5;i++)
{
PictrueBox px=new PictrueBox();
px.Image=imageList[i];//图片存放在imagelist里面
px.Left=Convert.ToInt32(panel1.ClientSize.Width*0.08); //左边距取容器8%宽度
px.Top=Convert.ToInt32(panel1.ClientSize.Height*0.1)*i+80;//上边距是高度10%尺寸,间距80pix
Label lb=new Label();
lb.AutoSize=true;
lb.Name="lb"+i.ToString();
lb.Text=ds.Tables[0].Rows[i]["数据库列名"].ToString();//初始化显示数据库前五行指定列数据
lb.Left=px.Left+120; //Label在pictrueBox正右边
lb.Top=px.Top;//与图片等高
Button btn=New Button();
btn.Name="bn"+i.ToString();
btn.Text="提交"; //提交按钮
//btn... 一样的设计靠右边
btn.Click+=new EventHandler(btnClick); //给他<a href="https://www.baidu.com/s?wd=%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3P1R4nvDYPW6LujuWnvN-0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErjDsnjfsPWcznjT4nHm4nHnz" target="_blank" class="baidu-highlight">自定义事件</a>
//加入以上控件到panel1
this.Panel1.Controls.Add(px);
this.Panel1.Controls.Add(lb);
this.Panel1.Controls.Add(btn);
}
}
//按钮的<a href="https://www.baidu.com/s?wd=%E8%87%AA%E5%AE%9A%E4%B9%89%E4%BA%8B%E4%BB%B6&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Y3P1R4nvDYPW6LujuWnvN-0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3ErjDsnjfsPWcznjT4nHm4nHnz" target="_blank" class="baidu-highlight">自定义事件</a>
void btnClick(object sender,EventArgs e)
{
string name=((Button)sender).Text;//获取自己名称
string labname="lb"+name.SubString(2,name.Length-2); //获取标签名
Label label=(Label)this.panel1.Controls[labname];//获取标签control
MessageBox.Show(label.Text);//弹出他对应的标签测试一下
}
void pageList(int index)
{
//这里写计算翻页的代码
}
很多时候我们看到的一些工具箱上没有的界面,不要疑神疑鬼以为他是第三方控件或者特殊控件,自己动手画一个就好了,这就是C#和Java的长项
VS自己提供一套控件,也提供给你usercontrol,无论是那种控件他的类型是control。
使用的时候你可以从工具箱拖放,拖放完了后你会发现他在disign里面自动构造了申明与实例。我们也可以不让托管代码去构造,手工是引用,这种引用就需要实例化。实例化也指向一个已经存在的实例,这种实例可以是VS托管代码自带的,也可以使你创建的usercontrol。
比如我们要使用一个button,他是vs自带的。就可以直接实例化后设置他的属性以及订阅事件:
Button btn=new Button();
btn.Left=...;
btn.Top=...;
btn.Name="buto";
btn.Click+=(Object ob,EventArgs we)=>{
....
};
实例确定好了以后要把他装入容器:
panel1.Controls.Add(btn);
现在我依据刚才取得名字和类型去找他的原型:
Button b=(Button)panel1.Controls["buto"];
b.Enabled=false;
如果我没有取名字,那就用类型去遍历他的原型:
foreach(Control ctl in panel1)
{
if(ctl is Button)
{
ctl.Enabled=false;
}
}
他的父容器是.Perent子类。他的项目原型是要用object映射。
自定义控件也是一样,前提你要保存,不理解的你就看工具箱上能不能找到,保存过能调试过的能在工具箱找到。