当前位置: 首页 > article >正文

C#动态循环生成控件(附源码)

C#动态循环生成控件(附源码)

  • 前言
  • 一、为什么要动态带出代码?
    • 1.示例图片
    • 2.原因
  • 二、动态带出步骤
    • 1.定义
        • 1.定义相关控件
        • 2.进行循环(部分代码展现)
        • 3.编写数据库语句
  • 三、源码展现
        • 1、源码
        • 2、代码效果展示


前言

该文章总结了如何在C#动态带出控件并进行编写,从而避免制作人员拖出一个个控件,解决了控件过多,而导致代码冗余过长的问题,本文联合了sql server数据库进行编写,使得文件管理更加有序


一、为什么要动态带出代码?

1.示例图片

示例图片:示例图片

2.原因

如上图,我有15个商品下单部分,每个部分有5个相关的控件,包括(textbox、label、button、GroupBox、pictureBox),整个小界面就有75个控件。
如果我一个个拖出相关控件出来并进行编写,这会导致出现将近3千行垃圾代码,况且我一个采购界面不止一个小界面(有16个小界面),所以我不得不采取动态带出控件,来进行程序的编写。


二、动态带出步骤

1.定义

1.定义相关控件

我们要定义相关控件,想要找到他们之间的父子级练习,比如我的groupbox要放在一个panel里面,我的其他控件要放在groupbox里面

代码如下(示例):

Panel[] panel1s = new Panel[30];System.Windows.Forms.GroupBox[] GroupBoxs = new System.Windows.Forms.GroupBox[30];Button[] bnt = new Button[30];PictureBox[] pictureBoxes = new PictureBox[30];
2.进行循环(部分代码展现)

其次我们要开始通过循环语句,带出相关控件,通过定义各个控件的相关属性,使得控件可以被带出并进行展示

代码如下(示例):

 for (int i = 0; i < 16; i++){GroupBoxs[i] = new System.Windows.Forms.GroupBox();GroupBoxs[i].Name = "panel_" + i.ToString();GroupBoxs[i].Parent = panel2;GroupBoxs[i].Location = new Point((i % 4) * 300, (i / 4) * 200);GroupBoxs[i].Width = 300;GroupBoxs[i].Height = 150;var textBox = new System.Windows.Forms.TextBox();textBox.Name = "DishTextBox_" + i.ToString();//textbox属性名字textBox.Text = "白菜" //textbox展示的字段textBox.Parent = GroupBoxs[i];textBox.Location = new Point(10, 10);textBox.Size = new Size(100, 30);textBox.ReadOnly = true;var textBox2 = new System.Windows.Forms.TextBox();textBox2.Name = "textBox_" + i.ToString();textBox2.Parent = GroupBoxs[i];textBox2.Location = new Point(170, 60);textBox2.Size = new Size(50, 30);var textBox3 = new System.Windows.Forms.TextBox();textBox3.Name = "FoodNo_" + i.ToString();          textBox3.Parent = GroupBoxs[i];textBox3.Location = new Point(170, 60);textBox3.Size = new Size(50, 30);textBox3.Visible = false;var label = new System.Windows.Forms.Label();label.Name = "lbl_" + i.ToString();label.Text = "采购数量(斤)";label.Parent = GroupBoxs[i];label.Location = new Point(155, 40);label.Size = new Size(100, 30);bnt[i] = new Button();bnt[i].Name = "bntton_" + i.ToString();bnt[i].Text = "添加入单";bnt[i].Parent = GroupBoxs[i];bnt[i].Location = new Point(155, 100);bnt[i].Size = new Size(80, 20);                }
3.编写数据库语句

代码如下(示例):

var dt = DBcoonnet.Query(string.Format("select NameOfFood,PictureAddress,FoodNo FROM [CanteenManagement].[dbo].[BasicTableOfDishes] where TypeOfFood = '{0}' ", nodeName)).Tables[0];

三、源码展现

1、源码
        public void order(string nodeName){Panel[] panel1s = new Panel[30];System.Windows.Forms.GroupBox[] GroupBoxs = new System.Windows.Forms.GroupBox[30];Button[] bnt = new Button[30];PictureBox[] pictureBoxes = new PictureBox[30];var dt = DBcoonnet.Query(string.Format("select NameOfFood,PictureAddress,FoodNo FROM [CanteenManagement].[dbo].[BasicTableOfDishes] where TypeOfFood = '{0}' ", nodeName)).Tables[0];//此处调用了我的相关数据库,读者可以对相关sql语句进行编写for (int i = 0; i < dt.Rows.Count; i++){GroupBoxs[i] = new System.Windows.Forms.GroupBox();GroupBoxs[i].Name = "panel_" + i.ToString();GroupBoxs[i].Parent = panel2;GroupBoxs[i].Location = new Point((i % 4) * 300, (i / 4) * 200);GroupBoxs[i].Width = 300;GroupBoxs[i].Height = 150;var textBox = new System.Windows.Forms.TextBox();textBox.Name = "DishTextBox_" + i.ToString();textBox.Text = dt.Rows[i]["NameOfFood"].ToString();textBox.Parent = GroupBoxs[i];textBox.Location = new Point(10, 10);textBox.Size = new Size(100, 30);textBox.ReadOnly = true;var textBox2 = new System.Windows.Forms.TextBox();textBox2.Name = "textBox_" + i.ToString();textBox2.Parent = GroupBoxs[i];textBox2.Location = new Point(170, 60);textBox2.Size = new Size(50, 30);var textBox3 = new System.Windows.Forms.TextBox();textBox3.Name = "FoodNo_" + i.ToString();textBox3.Text = dt.Rows[i]["FoodNo"].ToString();textBox3.Parent = GroupBoxs[i];textBox3.Location = new Point(170, 60);textBox3.Size = new Size(50, 30);textBox3.Visible = false;var label = new System.Windows.Forms.Label();label.Name = "lbl_" + i.ToString();label.Text = "采购数量(斤)";label.Parent = GroupBoxs[i];label.Location = new Point(155, 40);label.Size = new Size(100, 30);var pictureBox = new PictureBox();pictureBox.Name = "pictureBoxes" + i.ToString();pictureBox.Text = "pictureBoxes" + i.ToString();pictureBox.Parent = GroupBoxs[i];pictureBox.Location = new Point(10, 30);pictureBox.Size = new Size(100, 100);pictureBox.Image = System.Drawing.Image.FromFile(dt.Rows[i]["PictureAddress"].ToString());pictureBox.BackgroundImageLayout = ImageLayout.Stretch;pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;bnt[i] = new Button();bnt[i].Name = "bntton_" + i.ToString();bnt[i].Text = "添加入单";bnt[i].Parent = GroupBoxs[i];bnt[i].Location = new Point(155, 100);bnt[i].Size = new Size(80, 20);}}
2、代码效果展示

请添加图片描述


http://www.lryc.cn/news/2418825.html

相关文章:

  • 泽西岛Java教程
  • vrml场景实例代码_【免费毕设】JAVA3D的网络三维技术的设计与实现(源代码+论文+说明)...
  • 整人BAT\VBS代码 自创
  • 网络安全初学者必备的60个工具,零基础入门到精通,收藏这一篇就够了
  • FileUpload实现多文件上传与下载
  • 电脑xp系统坏了,如何处理
  • html 设置min height,CSS中min-height使用技巧
  • 教育界常用网站汇总
  • 常用搜索引擎搜索串
  • ISA Server是什么
  • 中移动详解Mobile Market运作流程
  • 计算机毕业设计PHP短视频管理小程序(源码+程序+uni+lw+部署)
  • 《数据库系统概念》——关系数据库
  • Postgresql B-tree索引
  • 【汇编】80x86指令系统
  • python爬取电影天堂的下载链接
  • 推荐几个好用的网站导航
  • 博弈论、竞价机制和AI
  • 手把手教您:iOS 6.1~6.12 完美越狱教程
  • Executors一篇就够
  • Windows 网络编程
  • 各种TCP端口详细说明中文版
  • 硬件工程师需要学习哪些知识
  • Linux下7.3虚拟机的完整封装
  • 马云语录——经典!
  • 戴尔笔记本开机logo进度条时间长的解决办法
  • 总结 vb与数据库的连接方法
  • 李开复--生命是最严厉的导师
  • 虐杀原形2闪退、prototype2打开闪退,无法运行解决办法
  • php配置文件详解(phg.ini php-fpm.conf)