2014-12-11 2 views
0

я пытаюсь добавить флажков панели с этим кодом:Элементы, добавленные ControlCollection не показывая

For t = 0 To taglist.Count - 1 'list(of string) 
     'new ComboBox 
     Dim cbx As New CheckBox 

     'some options 
     cbx.ThreeState = True 
     cbx.CheckState = CheckState.Indeterminate 
     cbx.Name = "cbxTag" & cnt 
     cnt += 1 
     cbx.Text = taglist.Item(t) 
     'cbx.Top = (y + 2) * 10 
     'cbx.Left = x * 30 + 10 
     cbx.Location = New Point(x * 60 + 5, (y) * 20 + 20) 

     'Add it to controls 
     SplitContainer2.Panel1.Controls.Add(cbx) 

     ' Positioning stuff 
     If x * 60 + 65 < SplitContainer2.Panel1.Width Then 
      x += 1 
     Else 
      x = 0 
      y += 1 
     End If 
    Next 

Использование отладки я вижу, что элементы получили добавлены в коллекцию и положение кажется правильным (в видимое положение).

Проблема: на форме появляется только первый элемент каждой строки. Редактировать: Проблема кажется чем-то с x koordinate.

Заранее спасибо

+1

При добавлении элементов в SplitContainer.Panel элементы будут форматировать соответственно. Возможно, неправильная верхняя и левая логика. Можете ли вы прокомментировать эту часть кода и посмотреть, добавляются ли ваши предметы? Также вы уверены, что у вас есть более одного элемента в вашем списке? – Codexer

+0

в порядке, они добавлены после комментирования верхней и левой части. нашел '.location' - попробовал это, чтобы получить позиции в позиции. любые другие способы? – Index

+1

Добавьте FlowLayoutPanel в splitpContainer.Panel, к которому вы добавляете флажки. затем добавьте флажки в FlowLayoutPanel.Contros. FlowLayoutPanel позаботится о том, чтобы установить флажки для вас. –

ответ

0

Проблема была размером флажком. В отличие от флажка, добавленного в конструкторе, свойство Autosize FALSE при создании флажка с Dim cbx As New CheckBox.

В результате получилось, что они были созданы с размером около 80-100 и, казалось, перекрывали друг друга так, как они не были видны (фон первого флажка спрятал флажок второго и т. Д.).

поэтому решение моей проблемы было:

cbx.AutoSize = True 
Смежные вопросы