Visual Basic / visual studio 2010窗体窗体加载空白

时间:2015-11-15 17:23:12

标签: vb.net forms visual-studio-2010

我是视觉基础的新手,所以希望这是一个简单的问题。我有一个菜单,按钮可以调用不同的表格。表单设计并具有标签和文本字段和按钮等。从主菜单我尝试了两种不同的方式调用表单。表单打开,看起来正确和功能的一种方式。另一种方式是将表单打开为一个没有字段的小空白方块。最后,我想在主菜单打开时创建一组List对象,并将它们来回传递给其他表单以进行输入和处理。我使用并行列表作为简单学校实验室的临时数据库。我只是不知道我打电话给表格的方式有什么问题。我还没有担心正确传递List对象。

Public Class frmMain

Dim arrGames As New List(Of String)
Dim arrDates As New List(Of String)
Dim arrPrices As New List(Of Decimal)
Dim arrSeats As New List(Of Integer)

Private Sub btnEnterGames_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEnterGames.Click
    'NewEnter.Visible = True
    Dim frmEnter As New NewEnter(arrGames, arrDates, arrPrices, arrSeats)
    frmEnter.ShowDialog()
End Sub

Private Sub btnReports_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReports.Click
    'Reports.Visible = True
    Dim frmReports As New Reports(arrGames, arrDates, arrPrices, arrSeats)
    frmReports.Visible = True
End Sub

Private Sub btnSellTickets_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSellTickets.Click
    'SellTickets.Visible = True
    Dim frmSell As New SellTickets(arrGames, arrDates, arrPrices, arrSeats)
    frmSell.Visible = True
End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
    Close()
End Sub
End Class

这是NewEnter表单的代码。我有新的例程,接受4个列表,基本上什么也没做。做"' NewEnter.Visible = True"在主菜单中将正确加载表单但我必须在表单中注释掉New子例程或出现错误。

Public Class NewEnter

Private _arrGames As List(Of String)
Private _arrDates As List(Of String)
Private _arrPrices As List(Of Decimal)
Private _arrSeats As List(Of Integer)

Sub New(ByVal arrGames As List(Of String), ByVal arrDates As List(Of String), ByVal arrPrices As List(Of Decimal), ByVal arrSeats As List(Of Integer))
    ' TODO: Complete member initialization 
    '  _arrGames = arrGames
    '  _arrDates = arrDates
    '  _arrPrices = arrPrices
    '  _arrSeats = arrSeats
End Sub

Private Sub btnSaveGame_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSaveGame.Click

    Dim arrGames As New List(Of String)
    Dim arrDates As New List(Of String)
    Dim arrPrices As New List(Of Decimal)
    Dim arrSeats As New List(Of Integer)

    Dim strGame As String
    Dim strPrice As String
    Dim strSeats As String
    Dim intSeats As Integer
    Dim decPrice As Decimal
    Dim bolGameErr As Boolean
    Dim bolDateErr As Boolean
    Dim bolPriceErr As Boolean
    Dim bolSeatErr As Boolean

    strGame = txtGame.Text
    strPrice = txtPrice.Text
    strSeats = txtSeats.Text

    '~~~~~~~~~~~~verify a game is entered
    If String.IsNullOrEmpty(strGame) Or String.IsNullOrWhiteSpace(strGame) Then
        bolGameErr = True
    Else
        '~~~~~~~~~~~~verify price is numeric
        If IsNumeric(strPrice) Then
            decPrice = strPrice
            '~~~~~~~~~~~~~~~verify seats are numeric
            If IsNumeric(strSeats) Then
                intSeats = Convert.ToInt32(strSeats)
                ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ add elements to array lists
                arrGames.Add(New String(strGame))
                arrDates.Add(dtpDate.Text)
                arrPrices.Add(New Decimal(decPrice))
                arrSeats.Add(intSeats)

                lblSaveSuccessful.Visible = True
                ClearInput()
                ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ add elements to array lists
            Else
                bolSeatErr = True
            End If

        Else
            bolPriceErr = True
        End If
    End If

    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Check flags for input errors
    If bolDateErr = True Then
        lblErr.Text = "Invalid date"
        lblErr.Visible = True
    End If
    If bolGameErr = True Then
        lblErr.Text = "Must enter a game name"
        lblErr.Visible = True
        txtGame.Focus()
    End If
    If bolDateErr = True And bolGameErr = True Then
        lblErr.Text = "Must enter a game name and valid date"
        lblErr.Visible = True
        txtGame.Focus()
    End If
    If bolPriceErr = True Then
        lblPriceErr.Visible = True
        txtPrice.Text = ""
        txtPrice.Focus()
    End If
    If bolSeatErr = True Then
        lblSeatErr.Visible = True
        txtSeats.Text = ""
        txtSeats.Focus()
    End If
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Check flags for input error
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Display output
    Dim i As Integer
    i = 0

    lblData.Text = arrGames.Count.ToString
    Do While i < arrGames.Count
        lblData.Text = Convert.ToString(arrGames(i)) & " on " & Convert.ToString(arrDates(i)) & " Price: " & _
            Convert.ToString(arrPrices(i)) & " Available Seats: " & Convert.ToString(arrSeats(i))
        i += 1
    Loop
    '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Display output

    lblData.Visible = True
End Sub

Private Sub ClearInput()
    'lblErr.Visible = False
    'lblPriceErr.Visible = False
    'lblSeatErr.Visible = False
    txtGame.Text = ""
    txtPrice.Text = ""
    txtSeats.Text = ""
    txtGame.Focus()
End Sub

Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'Me.Visible = True
    'Me.BackColor = Color.BurlyWood
    'Me.ResumeLayout()
    'Me.Activate()
    'Me.Focus()
    'Me.Show()
    'Me.lblGameHdr.Visible = True
End Sub

Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
    Close()
End Sub
End Class

1 个答案:

答案 0 :(得分:0)

将InitializeComponent()添加到构造函数类中。
默认情况下,这会添加到所有Visual Basic窗体的New(构造函数)函数中。它需要它在表单上设置UI组件。