接到项目时发现有有些控件是动态的,不同的仓有不同设置。仓中每层都有不同的报警温设置,其实用户并不需要这么多报警温,后来我们小组也讨论时把这部分控件都设为静态的,这样就特别简单了,只需要用到一个事务就解决了。当告诉米老师我们的想法时,米老师的第一反应就是我们在偷懒。确实如果我们觉得实现没什么问题,肯定就不会想着把他设为静态的。现在想想,有这么好的机会去锻炼自己,要好好把握。我们需要做的是把每个环节做的最好,遇到问题解决问题,这样才能提高!
一、问题
根据层数动态创建一批有规律的控件
3层的仓房:
4层的仓房:
二、技术
1、动态创建控件,把握好坐标(相对位置的设置)
2、将所创建的控件放入到Arraylist控件中显示出来
三、具体实现
<span style="font-size:18px;"> Dim plAlarm As New Panel '动态添加Panel容器用来存放动态添加的控件
plAlarm.AutoScroll = True '设置Panel容器的滚动条为自动添加
For i = 1 To j '用循环来实现一层层添加,i是初始变量,j为层数
Dim lblF As New Label 'lblF为每行的第一个标签
Dim lblS As New Label 'lblS为每行的第二个标签
Dim txtF As New TextBox 'txtF为每行的第一个文本框
Dim txtS As New TextBox 'txtS为每行的第二个文本框
lblF.Text = "层" & i & "高报警" 'i层的第一个标签
lblS.Text = "层" & i & "低报警" 'i层的第二个标签
txtF.Tag = "层" & i & "高报警" 'i层的第一个文本框
txtS.Tag = "层" & i & "低报警" 'i层的第二个文本框
'设置Panel的坐标
plAlarm.Location = New System.Drawing.Point(412, 8)
'设置Panel的大小
plAlarm.Size = New System.Drawing.Size(387, 150)
'设置第i层的第一个和第二个标签
lblF.Location = New System.Drawing.Point(0, 1 + i * 28)
lblF.Size = New System.Drawing.Size(80, 14)
lblS.Location = New System.Drawing.Point(200, 1 + i * 28)
lblS.Size = New System.Drawing.Size(80, 14)
'设置第i层的第一个和第二个文本框
txtF.Location = New System.Drawing.Point(85, 1 + i * 28)
txtF.Size = New System.Drawing.Size(85, 23)
txtS.Location = New System.Drawing.Point(285, 1 + i * 28)
txtS.Size = New System.Drawing.Size(82, 23)
plAlarm.Controls.Add(lblF) '将第一个标签添加到容器中
plAlarm.Controls.Add(lblS) '将第二个标签添加到容器中
plAlarm.Controls.Add(txtF) '将第一个文本框添加到容器中
plAlarm.Controls.Add(txtS) '将第二个文本框添加到容器中
txtLIst.Add(txtF) '将每层第一个文本框放入到集合
txtLIst.Add(txtS) '将每层第二个文本框放入到集合
Next
'Me.Controls.Add(plAlarm)
gbSetStorageAlarm.Controls.Add(plAlarm) '将容器添加到groupbox中</span>