设置绘制的动态文本框的位置

时间:2013-02-25 06:55:17

标签: vb.net

我有一个主要表单,允许用户为问卷创建问题。当表单打开时,表单将为空白,并带有“添加问题和答案”按钮。此按钮将打开一个新表单,用户可以在其中设置问题和答案。一旦用户输入第一个问题并回答,它们将被带回主屏幕,并且将在该主屏幕上填充第一个问题和答案。这完全按照我需要的方式工作。问题是,当我想输入第二个问题和答案时,我需要将问题和答案放在第一个问题和答案之下,而是覆盖第一个问题。我需要以某种方式为我的“添加问题和答案”按钮添加一个计数器,以便在新表单打开后,我可以在新位置设置动态创建的文本框。 我只是不知道如何添加此计数器,因为每次单击按钮时,都会创建一个新表单,计数器的值将始终从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

1 个答案:

答案 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
相关问题