怎样使用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映射。
自定义控件也是一样,前提你要保存,不理解的你就看工具箱上能不能找到,猜瞎皮保存过能调试过的能在工具箱找到。