2013-02-25 49 views
0

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

你如何的问题添加到的主要形式?它是窗口中的窗口,还是Panel/User控件? – WozzeC 2013-02-25 07:23:45

+0

我将问题添加到使用此功能的主窗体中: – user1668123 2013-02-25 07:38:57

+0

什么功能?改为编辑你的线程。 – WozzeC 2013-02-25 07:58:25

回答

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 
+0

问题是,当我从主窗体调用子窗体时,会创建一个新窗体,因此我无法保存柜台位置并将其传递给子窗体。我正在考虑使用一个数组来存储这些问题,以便每当他们添加一个新问题时,它只会将它添加到数组中,而主窗体只能从数组中读取,但我不知道如何执行此操作。 – user1668123 2013-02-25 09:23:57

+0

@ user1668123它并不重要,你创建一个新的窗体,你仍然没有关闭它的背景上的主窗体不是吗?您可以访问其数据:'MainForm.iCount + = 10' – SysDragon 2013-02-25 09:26:13

+0

我认为问题在于输入到子表单中的数据没有存储在任何地方,所以当我创建下一个问题时,它将被覆盖。 – user1668123 2013-02-25 09:46:21