2013-02-25 45 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