怎样使用C#的控件

 我来答
hswyh
2017-08-07 · 知道合伙人软件行家
hswyh
知道合伙人软件行家
采纳数:268 获赞数:926
武汉市马里欧网络有限公司技术总监 增强现实技术工程师 软件工程系系主任

向TA提问 私信TA
展开全部

看你是第几个阶段的用户。

如果只是简单地试用一下,从工具箱上直接拖放就行,如果你要把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的长项

创作者zUzVB1Sl31
2017-08-21 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

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映射。

自定义控件也是一样,前提你要保存,不理解的你就看工具箱上能不能找到,保存过能调试过的能在工具箱找到。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式