我有一个主要表单,允许用户为问卷创建问题。当表单打开时,表单将为空白,并带有“添加问题和答案”按钮。此按钮将打开一个新表单,用户可以在其中设置问题和答案。一旦用户输入第一个问题并回答,它们将被带回主屏幕,并且将在该主屏幕上填充第一个问题和答案。这完全按照我需要的方式工作。问题是,当我想输入第二个问题和答案时,我需要将问题和答案放在第一个问题和答案之下,而是覆盖第一个问题。我需要以某种方式为我的“添加问题和答案”按钮添加一个计数器,以便在新表单打开后,我可以在新位置设置动态创建的文本框。 我只是不知道如何添加此计数器,因为每次单击按钮时,都会创建一个新表单,计数器的值将始终从0开始。
有什么建议吗?
这是我将结果动态显示到主屏幕的功能:
Public Function SaveInfo()
Me.DialogResult = DialogResult.OK
Dim frmQuest As New frmAddCSIQuestions()
Dim values() As String = lstAnswers.Items.Cast(Of String).ToArray
txtList.Name = "txt"
txtQuest.Name = "txtQuest"
txtType.Name = "txtType"
txtList.Size = New Point(300, 20)
txtQuest.Size = New Point(300, 20)
txtType.Size = New Point(100, 20)
txtQuest.Text = txtQuestion.Text
If rdbFreeText.Checked = True Then
txtType.Text = rdbFreeText.Text
ElseIf rdbDropDown.Checked = True Then
txtType.Text = rdbDropDown.Text
End If
If bFirstRowAdded Then
frmQuest.TableLayoutPanel1.RowCount += 1
End If
bFirstRowAdded = True
frmQuest.TableLayoutPanel1.Controls.Add(txtQuest)
frmQuest.TableLayoutPanel1.Controls.Add(txtType)
frmQuest.TableLayoutPanel1.Controls.Add(txtList)
txtList.Text = String.Join(",", values)
Me.Hide()
frmQuest.ShowDialog()
End Function
答案 0 :(得分:0)
您必须在主窗体上创建计数器:
Public iCount As Integer
然后使用以下任何属性修改位置:
question.Top = iCount
iCount += question.Height + 10
-
question.Location = New Point(xVal, iCount)
iCount += question.Height + 10
另一种可能性是检测到最后一个问题:
Dim lastQ As Control = Form1.Controls(Form1.Controls.Count - 1)
question.Top = lastQ.Top + lastQ.Height + iMargin