2016-12-16 14 views
0

Я хочу, чтобы создать UserControl, которые включают 1 панель и 4 этикеткиКак создать собственную панель с четырьмя ярлыками внутри?

Вот что я пытаюсь до сих пор

Public Class OrderPanel 
    Inherits Panel 

    Public ItemName As String 
    Public Quantity As Integer 
    Public Price As Decimal 
    Public DiscountType As Boolean 
    Public DiscountAmount As Decimal 
    Public Properties As String 
    Public SubTotal As Decimal 
End Class 

Это конструктор файла

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ 
Partial Class OrderPanel 
    Inherits System.Windows.Forms.UserControl 

    'UserControl overrides dispose to clean up the component list. 
    <System.Diagnostics.DebuggerNonUserCode()> _ 
    Protected Overrides Sub Dispose(ByVal disposing As Boolean) 
     Try 
      If disposing AndAlso components IsNot Nothing Then 
       components.Dispose() 
      End If 
     Finally 
      MyBase.Dispose(disposing) 
     End Try 
    End Sub 

    'Required by the Windows Form Designer 
    Private components As System.ComponentModel.IContainer 

    'NOTE: The following procedure is required by the Windows Form Designer 
    'It can be modified using the Windows Form Designer. 
    'Do not modify it using the code editor. 
    <System.Diagnostics.DebuggerStepThrough()> _ 
    Private Sub InitializeComponent() 
     Me.Label1 = New System.Windows.Forms.Label() 
     Me.Label2 = New System.Windows.Forms.Label() 
     Me.Label3 = New System.Windows.Forms.Label() 
     Me.Label4 = New System.Windows.Forms.Label() 
     Me.SuspendLayout() 
     ' 
     'Label1 
     ' 
     Me.Label1.AutoSize = True 
     Me.Label1.Font = New System.Drawing.Font("Microsoft YaHei", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 
     Me.Label1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(161, Byte), Integer), CType(CType(218, Byte), Integer)) 
     Me.Label1.Location = New System.Drawing.Point(3, 2) 
     Me.Label1.Name = "Label1" 
     Me.Label1.Size = New System.Drawing.Size(59, 21) 
     Me.Label1.TabIndex = 0 
     Me.Label1.Text = "Label1" 
     ' 
     'Label2 
     ' 
     Me.Label2.AutoSize = True 
     Me.Label2.Font = New System.Drawing.Font("Microsoft YaHei", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 
     Me.Label2.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(161, Byte), Integer), CType(CType(218, Byte), Integer)) 
     Me.Label2.Location = New System.Drawing.Point(3, 23) 
     Me.Label2.Name = "Label2" 
     Me.Label2.Size = New System.Drawing.Size(59, 21) 
     Me.Label2.TabIndex = 1 
     Me.Label2.Text = "Label2" 
     ' 
     'Label3 
     ' 
     Me.Label3.AutoSize = True 
     Me.Label3.Font = New System.Drawing.Font("Microsoft YaHei", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) 
     Me.Label3.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(161, Byte), Integer), CType(CType(218, Byte), Integer)) 
     Me.Label3.Location = New System.Drawing.Point(3, 44) 
     Me.Label3.Name = "Label3" 
     Me.Label3.Size = New System.Drawing.Size(59, 21) 
     Me.Label3.TabIndex = 2 
     Me.Label3.Text = "Label3" 
     ' 
     'Label4 
     ' 
     Me.Label4.Font = New System.Drawing.Font("Microsoft YaHei", 14.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(134, Byte)) 
     Me.Label4.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(161, Byte), Integer), CType(CType(218, Byte), Integer)) 
     Me.Label4.Location = New System.Drawing.Point(257, 0) 
     Me.Label4.Name = "Label4" 
     Me.Label4.RightToLeft = System.Windows.Forms.RightToLeft.Yes 
     Me.Label4.Size = New System.Drawing.Size(128, 23) 
     Me.Label4.TabIndex = 3 
     Me.Label4.Text = "Label4" 
     Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleLeft 
     ' 
     'OrderPanel 
     ' 
     Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) 
     Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font 
     Me.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle 
     Me.Controls.Add(Me.Label4) 
     Me.Controls.Add(Me.Label3) 
     Me.Controls.Add(Me.Label2) 
     Me.Controls.Add(Me.Label1) 
     Me.Name = "OrderPanel" 
     Me.Size = New System.Drawing.Size(386, 66) 
     Me.ResumeLayout(False) 
     Me.PerformLayout() 

    End Sub 

    Friend WithEvents Label1 As Label 
    Friend WithEvents Label2 As Label 
    Friend WithEvents Label3 As Label 
    Friend WithEvents Label4 As Label 
End Class 

Когда я пытаюсь добавить этот usercontrol для моей формы я получаю эту ошибку

«Не удалось загрузить элемент панели инструментов, он будет удален из панели инструментов» error image

Как я могу решить эту проблему?

+0

Look в верхней части файла конструктора и вашего файла кода. Существует два наследования: 'UserControl' и' Panel', которые не допускаются в VB .NET. Либо удалите наследование в файле конструктора и сохраните его в панели инструментов, либо наоборот измените файл конструктора, чтобы наследовать «Панель» и удалить его в файле кода. –

+1

@AlexB. Похоже, мы пришли к подобным ответам примерно в то же время. Дай мне знать, если ты хочешь, чтобы я забрал твою, чтобы ты поднялся. –

+0

@AndrewMortimer Наши ответы не совсем то же самое, я думаю. Я рекомендую изменить наследование на Panel вместо UserControl, так как это приведет к удалению всех свойств Panel в классе OrderPanel. См. Мой ответ, если это имеет смысл. Вы можете держать вас в курсе. –

ответ

2

ответ Андреевский это хорошо, но когда вы изменяете наследство UserControl вы потеряете все Panel специфические свойства (например, AutoScaleDimensions) в OrderPanel классе.

Так что я рекомендую держать Panel наследование, но удалить генерируется один:

OrderPanel.designer.vb

Partial Class OrderPanel 
     'Inherits System.Windows.Forms.UserControl' <--- delete this 
     Inherits Panel '<--- add this 

OderPanel.vb

Public Class OrderPanel 
    'Inherits Panel <--- delete this 
1

Ваш класс OrderPanel должен наследовать от UserControl

Public Class OrderPanel 
    Inherits UserControl