winform中动态生成多行label,同时添加滚动条
设计思路大概是这样的,Form内添加一个groupBox,groupBox内添加一个panel,panel的属性AutoScroll=true,在panel内动态添加label。
原始From如下:
动态添加的代码如下:
public partial class Form1 : Form
{
string[] _DataSource = new string[] { "" ,"" ,"","","","","" };
int _LX = ;
int _LY = ;
int _LWidth = ;
int _LHeight = ;
int _LMaxChar = ;
int _YSpace = ;
int _XSpace = ;
int _WellCounts = ;
int _TbX = ;
int _TbWidth = ;
int _TbHeight = ;
TextBox[] textBoxes;
public Form1()
{
InitializeComponent();
InitializeForm();
} private void InitializeForm()
{
_WellCounts = _DataSource.Length;
Label[] labels = new Label[_WellCounts];
textBoxes = new TextBox[_WellCounts]; for (int i = ; i < _WellCounts;i++)
{
string str = _DataSource[i];
str = str.Length > _LMaxChar ? str.Substring(, _LMaxChar - ) + "..." : str;
var l = new Label() { Text = str, AutoSize = false ,Size = new Size(_LWidth,_LHeight) };
if (i == )
{
l.Location = new Point(_LX,_LY);
}
else
{
_LY = _LY + _YSpace + labels[i - ].Size.Height;
l.Location = new Point(_LX,_LY);
}
var t = new TextBox() { Size = new Size(_TbWidth,_TbHeight) };
this.panel1.Controls.Add(l);
this.panel1.Controls.Add(t);
labels[i] = l;
textBoxes[i] = t;
} _TbX = _LX + _LWidth + _XSpace;
for (int i = ;i < _WellCounts;i++)
{
textBoxes[i].Location = new Point(_TbX,labels[i].Location.Y - );
}
} }
实现效果图:
对了,业务上还有需求就是点击关闭Form后,可以判断是否要关闭,代码如下:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
var result = MessageBox.Show(string.Format("部分输入值不合法!\n继续退出?"),
"提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (result == DialogResult.Cancel)
{
e.Cancel = true;
}
}
winform中动态生成多行label,同时添加滚动条的更多相关文章
- 编辑表格输入内容、根据input输入框输入数字动态生成表格行数、编辑表格内容提交传给后台数据处理
编辑表格输入内容.根据input输入框输入数字动态生成表格行数.编辑表格内容提交传给后台数据处理 记录自己学习做的东西,写的小demo,希望对大家也有帮助! 代码如下: <!DOCTYPE ht ...
- HTML中动态生成内容的事件绑定问题【转载】
转自 http://www.hitoy.org/event-binding-problem-of-dynamically-generated-content.html 由于实际的需要,有时需要往网页中 ...
- JavaScript中动态生成表格
动态生成表格,首先需要输入并获取动态的数字,html中结构代码如下:行:<input type="text" id="row" value="5 ...
- 在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定
最近在做今日头条WP的过程中,遇到需要动态生成Pivot项的问题.第一个版本是把几个频道写死在xaml里了,事件绑定也写在xaml里,每个频道绑定一个ObservableCollection<A ...
- EasyUI中动态生成标签页
这是最近学到的内容,当时是有思路但是不知道怎么获取当前的点击对象,就没有实现功能,通过更深入的学习,我知道了不仅仅是Java,Oracle中有一个this,同样的EasyUI中也存在一个this,来获 ...
- JQuery中动态生成元素的绑定事件(坑死宝宝了)
今天在做项目的时候,遇到了一个前端的问题,坑了我好长时间没有解决,今天就记录于此,也分享给大家. 问题是这样的,首先看看我的界面,有一个初始印象: 下面是操作列所对应的JS代码: { "da ...
- WinForm中动态添加控件 出现事件混乱,解决办法记录。
还是在抢票软件中出的问题,我没点击一个联系人,要生成一排控件,其中有席别combobox这样的下拉框控件,会出现如下图所示的问题:问题描述:在代码中动态创建的控件,事件混乱了,一个控件触发了所有同类型 ...
- 基于DevExpress的BandedGridView动态生成多行(复合)表头
最近cs项目中有个看板的功能需求,整个系统是基于DevExpress组件开发的,由于对这个组件的布局不是很熟,也借鉴了网上一些其他人的做法,普遍都是通过GridControl的BandedGridVi ...
- Jquery中动态生成的元素没有点击事件或者只有一次点击事件
今天用jq做动态生成的元素的click事件时,click只执行了一次,当然有些朋友可能根本没执行, 执行了一次的原因是因为可能有函数加载了一遍,一次都没执行的可能是没绑定对象或者jq版本问题, 动态生 ...
随机推荐
- 使用canvas时, 如何用相对单位(rem, rpx)来适配不同机型
使用canvas的api时, 使用的都是绝对数值, 如: 方法传参是坐标位置,不带单位,如ctx.translate(10,10); 那么此时, 我就需要将rem或rpx 转换成 px; 首先, 获取 ...
- Jquery中的offset()和position()深入剖析(元素定位)
先看看这两个方法的定义. offset(): 获取匹配元素在当前视口的相对偏移. 返回的对象包含两个整形属性:top 和 left.此方法只对可见元素有效. position(): 获取匹配元素相对父 ...
- shell脚本编程测试类型上
一bash的条件测试 判断某需求是否满足,需要由测试机制来实现.专用的测试表达式需要由测试命令辅助完成测试过程. 评估布尔声明,以便用在条件性执行中.若真,则返回0:若假,则返回1. 测试命令:• t ...
- Ververica Platform-阿里巴巴全新Flink企业版揭秘
摘要:2019云栖大会大数据 & AI专场,阿里巴巴资深技术专家王峰带来“Ververica Platform-阿里巴巴全新Flink企业版揭秘”的演讲.本文主要从Ververica由来开始谈 ...
- 【HDOJ6581】Vacation(模拟)
题意:有标号从0到n的n+1辆车,每辆车离终点的距离为s[i],车长为l[i],速度为v[i],规定不能超车,问何时所有车都能过终点线 n<=1e5,保证 思路: #include<bit ...
- Windows Server服务器之介绍及版本信息
Windows Server是Microsoft Windows Server System(WSS)的核心,Windows的服务器操作系统.每个Windows Server都与其家用(工作站)版对应 ...
- Vue项目中添加锁屏功能
0. 直接上 预览链接 Vue项目中添加锁屏功能 1. 实现思路 ( 1 ) 设置锁屏密码 ( 2 ) 密码存localStorage (本项目已经封装h5的sessionStorage和localS ...
- JDK换版本问题解决
在jdk安装第一个版本的时候,就默认在path配置值中加入C:\ProgramData\Oracle\Java\javapath; 所以我们需要把Path最前面的C:\ProgramData\Orac ...
- elementUI中input输入框,强制输入数字,并限制输入长度
<el-input v-model="item.userScore" onkeyup="this.value=this.value.replace(/[^\d.]/ ...
- promise基础用法
/** * Created by liyinghao on 2016/11/6. */ const fs = require('fs'); /* * 新建一个Promise对象,Promise就是一个 ...