怎样使用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

提交
取消

辅 助

模 式