C#动态循环生成控件附源码
前言
该文章总结了如何在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、代码效果展示
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhghekib
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13