-
2021-06-11 15:20:11
在某些开发中,我们可能需要根据实际用户需求来动态创建对应的控件,所以下列示例用代码动态创建label标签并进行布局,当然在实际应用开发中,我们可以自定义相关控件,然后利用此方法动态生成
布局有两种方式:
1、直接指定在窗体上的坐标
2,创建FlowLayoutPanel实例控件,把动态生成的控件添加其中
实现效果:创建9个label标签,在FlowLayoutPanel当中整齐显示,如下图
代码实现
FlowLayoutPanel flowLayoutPanel; private void Form1_Load(object sender, EventArgs e) { //生成自动排列控件FlowLayoutPanel flowLayoutPanel = new FlowLayoutPanel(); flowLayoutPanel.BackColor = Color.Red; flowLayoutPanel.Location = new System.Drawing.Point(100, 100); flowLayoutPanel.Name = "flowLayoutPanel1"; flowLayoutPanel.Size = new System.Drawing.Size(200, 100); flowLayoutPanel.TabIndex = 1; flowLayoutPanel.Visible = true; this.Controls.Add(this.flowLayoutPanel); //窗体当中添加FlowLayoutPanel控件 Run(); } int labelNum = 0; //生成标签控件标识 private void Run() { try { for (int i = 0; i < 10; i++) { labelNum++; // 标记标签序号 AddLabel(); } } catch { } } Label[] labels = new Label[9]; //存放动态生成的控件 private void AddLabel() { /* 添加label */ Label labelTemp = new Label(); labelTemp.AutoSize = true; labelTemp.Font = new Font("微软雅黑", 10F, FontStyle.Regular, GraphicsUnit.Point, 134); // 设置字体 labelTemp.Visible = true; labelTemp.Name = "label" + labelNum.ToString(); switch (labelNum) { case 1: labelTemp.Text = "西湖"; labelTemp.Location = new Point(150, 60); break; case 2: labelTemp.Text = "长城"; labelTemp.Location = new Point(150, 90); break; case 3: labelTemp.Text = "故宫"; labelTemp.Location = new Point(150, 120); break; case 4: labelTemp.Text = "外滩"; labelTemp.Location = new Point(150, 150); break; case 5: labelTemp.Text = "泰山"; labelTemp.Location = new Point(150, 180); break; case 6: labelTemp.Text = "黄山"; labelTemp.Location = new Point(150, 30); break; case 7: labelTemp.Text = "庐山"; labelTemp.Location = new Point(150, 60); break; case 8: labelTemp.Text = "天坛"; labelTemp.Location = new Point(150, 90); break; case 9: labelTemp.Text = "漓江"; labelTemp.Location = new Point(150, 180); break; case 10: labelTemp.Text = "大理"; labelTemp.Location = new Point(150, 30); break; default: break; } labels[labelNum - 1] = labelTemp; Controls.Add(labelTemp); //直接添加到窗体的定位处 flowLayoutPanel.Controls.Add(labelTemp); //添加到布局里面 }
更多相关内容 -
asp.net 动态添加控件
2017-11-06 21:33:31asp.net 动态添加控件,C# 代码。动态添加控制的一个小实例。希望对大家有用。。。 -
C#winform中动态生成控件
2019-04-04 22:37:16第一次玩这个,自己在学习过程中需要用到动态生成控件,参考了些资料,写了个生成label控件的方法,希望大家喜欢。 -
SourceCode_两种QT动态添加控件(代码添加控件)到窗体的源码.rar
2021-04-06 17:36:09m_gLayout->addWidget(m_labelcreate.at(itemIndex),i,j+lineEditindex); m_gLayout->addWidget(m_lineEditcreate.at(itemIndex),i,j+lineEditindex+1); -
动态生成控件
2018-01-13 09:12:31动态生成控件 通过代码设置设置控件的属性,如背景色 字体颜色等 -
Wpf Mvvm 动态创建控件
2020-03-09 17:33:32根据传值控件名称(如TextBox,CheckBox,ComboBox,CheckBoxList,DatePicker等) 动态生成控件,选中或设置值后取值 -
安卓 动态添加控件,自定义的或代码实现
2015-06-12 17:21:23动态添加控件,自定义的或代码实现,适合学习 -
pyqt5 实现 主窗口中动态添加控件
2019-07-23 14:10:56pyqt5 实现 主窗口中动态添加控件 自己使用的笨方法,但是效果一样 -
ACCESS窗体 动态添加控件
2020-12-04 06:10:28ACCESS窗体 原生的控件都是无法动态添加的,但是我通过添加一个Frame容器控件,实现了这个想法。...并且能够获取到动态添加控件的事件。 只是,动态添加的控件必须是UserForm控件了,一些属性、方法、事件稍有不同! -
asp.net 动态生成控件并获取其值
2020-10-30 02:18:29代码比较简单,所以不多做解释了: -
动态创建控件DynamicMultiCtrls
2017-12-11 18:08:19在项目开发时,可能遇到动态创建控件的情况。如根据当前用户的数量,动态创建控件显示用户信息等情况,需要动态常见静态文本框和编辑框等,这里提供一个例程供大家参考。 -
java代码动态生成控件
2014-05-12 14:36:48java代码动态生成控件,代码比较简单,界面也相对比较单调,不过如何通过代码动态生成控件等,写的很明确。 -
python例程1.exec动态生成控件.7z
2021-07-19 17:05:22python例程1.exec动态生成控件.7z -
动态添加控件
2017-11-01 16:13:54在VB6窗口内动态添加标签、文本框、按钮、复选框、单选框、下拉框、列表框以及容器等控件,全源码。 -
Qt动态控件生成并布局
2018-01-24 15:11:52一个很实用的小demo,动态生成控件并实现布局,有一定启发思想,共同学习 -
动态添加控件_动态添加控件_
2021-09-30 13:08:34在C#中动态添加控件 -
c#动态添加控件
2015-03-25 22:14:29c# winform 右键菜单 添加删除 动态添加 -
MATLAB GUI界面之动态创建控件
2021-04-30 18:23:14在GUI界面中动态创建控件 -
WPF动态生成控件
2020-04-28 21:40:37WPF动态生成控件 作者:李嘉乐 本次任务完成时间:2020年4月20日~2020年4月28日 开发工具与关键技术: VS2015、C#、WPF 完成的功能: 编写模板保存 1、首先搭建一个主体界面,在界面的“WrapPanel”里动态生成多个...WPF动态生成控件
作者:李嘉乐
本次任务完成时间:2020年4月20日~2020年4月28日
开发工具与关键技术: VS2015、C#、WPF
完成的功能: 编写模板保存1、首先搭建一个主体界面,在界面的“WrapPanel”里动态生成多个控件Button,界面代码如下:
效果图;
二、通过连表查询桌台,根据桌台状态生成控件。代码如下:
效果图如下:
二.总结:
自己对代码的理解还不够,还需要更加的努力,坚持多写,多想,多做,多实践。 -
Android动态生成控件
2020-05-17 20:17:28在页面声明一个容器: 取得容器的id,并把当前的...//动态添加控件 //===1、添加外部LinerLayout LinearLayout layout=new LinearLayout(mActivityContext); //==1.1、设置LinearLayout的布局 LinearLayout.Layou.- 在页面声明一个容器:
-
- 取得容器的id,并把当前的Activity声明为全局的变量:
- private Activity mActivityContext;
并赋值:mActivityContext=this; - 然后,添加一个简单的控件:
- //动态添加控件
//===1、添加外部LinerLayout
LinearLayout layout=new LinearLayout(mActivityContext);
//==1.1、设置LinearLayout的布局
LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT
);
layout.setLayoutParams(layoutParams);
//===1.2、设置为横向布局
layout.setOrientation(LinearLayout.HORIZONTAL); - //==1.3、将容器添加到外部容器llOrderDetail
llOrderDetail.addView(layout); - 添加文字:
- 添加虚线:
- 
- 最后,记得将控件添加到页面的容器就行了;addView();
-
Qt动态添加控件
2020-11-17 10:24:31以下是添加20个控件组的效果,控件过多会自动添加滚动条 点击delete按钮可以删除所有控件组,同样可以知道是哪个按钮点击的。 实现 代码参考了网上的,自己做了一些修改。 创建一个新的控件组类,布局,开出接口供...前言
很多时候我们可以在UI designer上拖拽控件进行编写UI,但有的时候需要的控件数量是未知的,这时候就需要在代码中进行编写了。
效果
以下是添加2个控件组的效果
以下是添加20个控件组的效果,控件过多会自动添加滚动条
点击delete按钮可以删除所有控件组,同样可以知道是哪个按钮点击的。实现
代码参考了网上的,自己做了一些修改。
创建一个新的控件组类,布局,开出接口供外部调用void setInfo(QString str_lb,QString str_btn); void Mybtns::setInfo(QString str_lb, QString str_btn) { ui->label->setText(str_lb); ui->pushButton->setObjectName(str_btn); }
MAINWINDOW_H
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QHBoxLayout> #include <QPushButton> #include <QDebug> #include "mybtns.h" namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void slotBtnClicked(); void on_pushButton_clicked(); void on_pushButton_2_clicked(); private: Ui::MainWindow *ui; QList<Mybtns*> list_widget; QList<QPushButton *> btn ; }; #endif // MAINWINDOW_H
.cpp
#include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); for (int i = 0; i < 20; i++) { Mybtns *widget = new Mybtns(); list_widget.append(widget); ui->vlayout->addWidget(widget); widget->setInfo("张三(123456)","#" + QString::number(i)); } btn = this->findChildren<QPushButton *>(); foreach (QPushButton * b, btn) { connect(b, SIGNAL(clicked()), this, SLOT(slotBtnClicked())); } } MainWindow::~MainWindow() { delete ui; } void MainWindow::slotBtnClicked() { QPushButton *btn = (QPushButton *)sender(); QString objectName = btn->objectName(); if(objectName.indexOf("#") != -1) { objectName.replace("#",""); qDebug()<<objectName; } qDebug()<<objectName; } void MainWindow::on_pushButton_clicked() { int num = ui->vlayout->count(); // 获取布局中的item的数量 while( num){ QWidget *widget = ui->vlayout->itemAt(num - 1)->widget(); ui->vlayout->removeWidget(widget); delete widget; num --; } } void MainWindow::on_pushButton_2_clicked() { int num = ui->vlayout->count(); // 获取布局中的item的数量 while( num){ QWidget *widget = ui->vlayout->itemAt(num - 1)->widget(); ui->vlayout->removeWidget(widget); delete widget; num --; } for (int i = 0; i < 20; i++) { Mybtns *widget = new Mybtns(); list_widget.append(widget); ui->vlayout->addWidget(widget); widget->setInfo("张三(123456)","#" + QString::number(i)); } //防止删除后无法找到btn控件 btn = this->findChildren<QPushButton *>(); foreach (QPushButton * b, btn) { connect(b, SIGNAL(clicked()), this, SLOT(slotBtnClicked()),Qt::UniqueConnection); } }
链接
链接: Qt动态添加控件demo
-
Qt动态生成控件
2020-03-23 09:47:26实现功能:根据输入的数字,动态的添加对应数量的按钮。 初学时参考了很多博文,内容良莠不齐,甚至还有一些莫名其妙的答案,在此我将最简单的核心代码分享给大家。 1.Qt Designer中设计窗口,其包含一个按钮和一个... -
LABVIEW中动态添加控件
2011-11-16 18:56:18可以在labview中动态的添加控件。其中的send.vi为发送程序,可以在运行时在receive.vi中添加一个字符串控件。 -
C#动态生成控件以及添加事件处理
2013-02-19 13:37:40C#动态生成控件以及添加事件处理 -
Android 动态生成多个控件并实现点击
2016-11-16 17:53:50Android 动态生成多个控件并实现点击 -
Qt动态添加控件demo
2020-11-17 10:27:40很多时候我们可以在UI designer上拖拽控件进行编写UI,但有的时候需要的控件数量是未知的,这时候就需要在代码中进行编写了。 -
qtcreater动态添加控件
2020-07-19 20:02:08QTCTREATER动态添加控件 卸载前面:项目中用到动态加载控件的情况,用户选择增加集群内ip的情况,有多少不好说,所以考虑动态添加,留个记录! qt界面为ui布局+代码实现: UI部分很简单,如下: 图1.这是界面布局... -
WpfApp_Move(自定义控件的放大缩小,动态添加控件保存)源代码
2018-08-17 16:00:30WpfApp_Move(自定义控件的放大缩小,动态添加控件保存)源代码WpfApp_Move(自定义控件的放大缩小,动态添加控件保存)源代码 可动态多动控件,放大控件,添加控件,添加属性保存到xml中启动的时候读取。 -
C#批量动态生成控件
2020-06-24 22:28:05有时候我们需要动态添加一些功能相似的控件,而且这些控件可能是容器 po采用了类的方法,下面以动态生成元器件为例: 1.首先先做出一个panel,里面可能有picturebox,button等控件,这都没关系,先做出来可以方便我们... -
wpf绑定数据及动态生成控件
2020-06-15 16:52:24前言:从来没使用过wpf,但是最近的项目需要使用到这...1.datagrid动态绑定数据 xmal代码: <DataGrid x:Name="dataGrid" Margin="0,52,0,65" AutoGenerateColumns="False" LoadingRow="dataGrid_LoadingRow"...