2013-10-03 119 views
0

如何使一種形式的事件在另一種形式中執行。我有一個窗體(新井形式)與2個文本框,一個組合框和一個按鈕。只要主窗體上需要新的進度條(Stage Tally Main),就會調用它。每當我在新井上填寫信息並按下按鈕時,我希望階段計數主要使用文本框和組合框中的信息添加進度欄。如何在New Well窗體上添加按鈕在Stage Tally Main上添加進度條?單擊一種形式的按鈕以另一種形式執行動作

回答

0

其實很簡單。如果您想要在表單2上執行一系列代碼,那麼您可以在表單1上放置:Public Sub some_code();在表單2中,在按鈕點擊或表單加載或任何可以說的形式.some_code()並調用一系列代碼。我在這裏創建一個更好的示例:

請注意,只有在下面的代碼中,菜單項加載的新井格式和下面的公共子集叫做go_Progess_bar()。代碼描述了在某個位置創建一個進度條,等等等等等等。公用分類some_name()

公共類Form1中

Private Sub NewWellToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NewWellToolStripMenuItem.Click 

    Dim NewWell As New NewWellForm() 
    NewWell.ShowDialog() 

End Sub 

Public Sub go_Progress_Bar() 
    Dim ctrl As Control 
    Dim i As Integer = 0 
    For Each ctrl In Controls 
     If TypeOf ctrl Is ProgressBar Then 
      i = i + 1 
     End If 
    Next 

    Dim NumProgressBar As String = Convert.ToString(i) 

    Dim pBar As New ProgressBar() 

    pBar.Location = New System.Drawing.Point(20, 50 * (2 * i + 1)) 

    pBar.Name = "progressBar" + NumProgressBar 

    pBar.Width = 1200 

    pBar.Height = 30 

    Dim CrewAndWell As New Label 

    CrewAndWell.Name = CrewSelection + WellSelection 

    CrewAndWell.Location = New System.Drawing.Point(20, 50 * (2 * i + 1) - 20) 

    CrewAndWell.Width = 100 

    CrewAndWell.Height = 20 

    CrewAndWell.Text = CrewSelection + ": " + WellSelection 

    Controls.Add(CrewAndWell) 

    Controls.Add(pBar) 
End Sub 

新井形式的代碼如下,它代表窗口2:基本上所有我想以另一種形式這種形式執行的代碼,我可以用一個簡單的初始化。忽略除按鈕單擊事件以外的所有其他內容。單擊按鈕時,由form1.go_Progress_Bar()調用go_Progress_Bar,代碼在form1上執行。穴居人能做到這一點非常簡單。

公共類NewWellForm

Private Sub NewWellForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    ComboBox1.Items.AddRange(CrewList.ToArray()) 
End Sub 
Private Sub AddWell_Click(sender As Object, e As EventArgs) Handles AddWell.Click 
    CrewSelection = ComboBox1.SelectedItem 
    WellSelection = WellNameText.Text 
    Form1.go_Progress_Bar() 
    Close() 
End Sub 

末級

相關問題