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
4

1 回答 1

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
于 2013-02-25T08:31:22.567 回答