0

ユーザーがアンケートの質問を作成できるメインフォームがあります。フォームが開くと、フォームは空白になり、[質問と回答を追加] ボタンが表示されます。このボタンをクリックすると、ユーザーが質問と回答を設定できる新しいフォームが開きます。ユーザーが最初の質問と回答を入力すると、メイン画面に戻り、最初の質問と回答がそのメイン画面に表示されます。これはまさに私が必要としている方法で機能します。問題は、2 番目の質問と回答を入力したい場合、その質問と回答を最初のものの下に配置する必要があるのに、最初のものを上書きしてしまうことです。新しいフォームが開いたら、動的に作成されたテキストボックスを新しい場所に設定できるように、「質問と回答の追加」ボタンにカウンターを追加する必要があります。

助言がありますか?

結果をメイン画面に動的に表示する関数は次のとおりです。

 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


もう 1 つの可能性は、最後に追加された質問を検出することです。

Dim lastQ As Control = Form1.Controls(Form1.Controls.Count - 1)
question.Top = lastQ.Top + lastQ.Height + iMargin
于 2013-02-25T08:31:22.567 に答える