Сбивается разметка внутри контрола - Visual Basic .NET
Формулировка задачи:
В одном из блоков программы есть необходимость вывода контактов на экран в виде визиток. Визитки состоят из контролов:
1. Тело визитки - это Panel
2. Внутри 1 PictureBox для фотографии контакта
3. Так же внутри 4 Label - это Фамилия, имя, отчество и порядковый номер.
Первые 141 визитка создаются как надо. На 142-й происходит какой-то сбой. Никак не могу разобраться в чем причина. Если кто может помочь подскажите пожалуйста в чем может быть дело. Возможно слишком много контролов создаются? Тогда как еще можно реализовать идею. Это собственно код, создающий визитки:
Решение задачи: «Сбивается разметка внутри контрола»
textual
Листинг программы
Public Class Form2 Private nRow As Integer Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load vCard.vcWidth = 360 vCard.vcHeight = 230 vCard.vcMargin = 5 nRow = 2 With TableLayoutPanel1 .ColumnCount = 2 .Width = (vCard.vcWidth + vCard.vcMargin * 2) * .ColumnCount .Height = (vCard.vcHeight + vCard.vcMargin * 2) * nRow End With End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim crd As vCard Dim k As Integer For i = 0 To nRow - 1 For j = 0 To TableLayoutPanel1.ColumnCount - 1 crd = New vCard With crd .BackColor = Color.LightYellow .nameLast = "Иванов " & i.ToString & j.ToString .nameFirst = "Иван " & i.ToString & j.ToString .namePatronymic = "Иванович " & i.ToString & j.ToString .photo = ImageList1.Images(k) .createCard() End With TableLayoutPanel1.Controls.Add(crd) k += 1 Next Next End Sub End Class Public Class vCard Inherits Panel Private lbLst, lbFst, lbPtr As Label Private pnPhoto As Panel Public Sub New() MyBase.New() Me.Width = _vcWidth Me.Height = _vcHeight Me.BorderStyle = Windows.Forms.BorderStyle.Fixed3D Me.Margin = New Padding(_vcMargin) _pnW = 100 _pnH = 120 End Sub Public Shared Property vcWidth As Integer Public Shared Property vcHeight As Integer Public Shared Property vcMargin As Integer Public Property nameLast As String 'фамилия Public Property nameFirst As String 'имя Public Property namePatronymic As String 'отчество Public Property photo As Image Public Property pnW As Integer Public Property pnH As Integer Public Sub createCard() addNmLast() addNmFirst() addNmPatronymic() addPhoto() End Sub Private Sub addNmLast() lbLst = New Label With lbLst .Text = _nameLast .AutoSize = True .Font = New Font("Arial", 12) .Left = 160 .Top = 62 End With Me.Controls.Add(lbLst) End Sub Private Sub addNmFirst() lbFst = New Label With lbFst .Text = _nameFirst .AutoSize = True .Font = New Font("Arial", 12) .Left = 160 .Top = 95 End With Me.Controls.Add(lbFst) End Sub Private Sub addNmPatronymic() lbPtr = New Label With lbPtr .Text = _namePatronymic .AutoSize = True .Font = New Font("Arial", 12) .Left = 160 .Top = 125 End With Me.Controls.Add(lbPtr) End Sub Private Sub addPhoto() pnPhoto = New Panel With pnPhoto .Width = _pnW .Height = _pnH .BackgroundImage = photo .BackgroundImageLayout = ImageLayout.Stretch .BorderStyle = Windows.Forms.BorderStyle.FixedSingle .Left = 37 .Top = 47 End With Me.Controls.Add(pnPhoto) End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д