Добавление элементов управления в контейнер в декларации структуры в VB .NET - PullRequest
0 голосов
/ 15 февраля 2012

Есть ли способ добавить элемент управления в контейнер в объявлении структуры в VB .NET?

Что я действительно хотел бы сделать, это:

Structure LabelContainer
    Dim pnlContainer As New Panel
    Dim lblTime As New Label
    Dim lblStudent As New Label
    Dim lblTeacher As New Label
    lblTime.Parent = pnlContainer
    lblStudent.Parent = pnlContainer
    lblTeacher.Parent = pnlContainer
End Structure

Но это нене работает в VB .NET.Есть ли способ достичь того же самого?

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Структуры имеют очень ограниченную обработку событий, необходимых для элементов управления, таких как событие InitializeComponent (), которое вызывается при создании элемента управления. Смотрите это для более подробной информации:

http://www.codeproject.com/Articles/8607/Using-Structures-in-VB-NET

Что вы можете сделать, это создать класс, который наследует от панели, например:

Public Class LabelContainer
    Inherits Panel
    Friend WithEvents lblTeacher As System.Windows.Forms.Label
    Friend WithEvents lblStudent As System.Windows.Forms.Label
    Friend WithEvents lblTime As System.Windows.Forms.Label

    Private Sub InitializeComponent()
        Me.lblTime = New System.Windows.Forms.Label()
        Me.lblStudent = New System.Windows.Forms.Label()
        Me.lblTeacher = New System.Windows.Forms.Label()
        Me.SuspendLayout()
        '
        'lblTime
        '
        Me.lblTime.AutoSize = True
        Me.lblTime.Location = New System.Drawing.Point(0, 0)
        Me.lblTime.Name = "lblTime"
        Me.lblTime.Size = New System.Drawing.Size(100, 23)
        Me.lblTime.TabIndex = 0
        Me.lblTime.Text = "Label1"
        '
        'lblStudent
        '
        Me.lblStudent.AutoSize = True
        Me.lblStudent.Location = New System.Drawing.Point(0, 0)
        Me.lblStudent.Name = "lblStudent"
        Me.lblStudent.Size = New System.Drawing.Size(100, 23)
        Me.lblStudent.TabIndex = 0
        Me.lblStudent.Text = "Label2"
        '
        'lblTeacher
        '
        Me.lblTeacher.AutoSize = True
        Me.lblTeacher.Location = New System.Drawing.Point(0, 0)
        Me.lblTeacher.Name = "lblTeacher"
        Me.lblTeacher.Size = New System.Drawing.Size(100, 23)
        Me.lblTeacher.TabIndex = 0
        Me.lblTeacher.Text = "Label3"
        Me.ResumeLayout(False)

    End Sub
End Class
0 голосов
/ 15 февраля 2012

Вы можете добавить подпрограмму в свой Struct:

Structure LabelContainer
    Dim pnlContainer As Panel
    Dim lblTime As Label
    Dim lblStudent As Label
    Dim lblTeacher As Label
    Sub AddControls()
        lblTime.Parent = pnlContainer
        lblStudent.Parent = pnlContainer
        lblTeacher.Parent = pnlContainer
    End Sub
End Structure
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...