Chybějící prvky při kopírování ControlCollection   zodpovězená otázka

VB.NET, Algoritmy

Zdravím,

mám problém, který nejsem schopen vyřešit. Ve své aplikaci potřebuji překopírovat kolekci ovládcích prvků určitého formuláře do ovládacího prvku Panel. Formulář se jmenuje Form2 a prvky kopíruji po jednom (lepší způsob mi není znám):

1
2
3
For Each c As Control In Form2.Controls
    Panel1.Controls.Add(c)
Next

Problém je ale v tom, že se zkopírují jen liché ovládací prvky. Vytvořil jsem prázdný projekt, kam jsem umístil pouze problematickou část kódu, a situace se opakovala. Nedokážu pochopit, co dělám špatně.

Díky za rady...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zde je kompletní Solution: http://leteckaposta.cz/384908473

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
1
2
3
For i As Integer = 0 To Form2.Controls.Count - 1
    Panel1.Controls.Add(Form2.Controls(0))
Next

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Aha, nedošlo mi, že když přenesu referenci, že ovládací prvek nebude moci existovat na dvou různých místech, tedy přesune se. Proto ty zmatky ve For Each. Díky za Vaše řešení, je pro mne přínosem.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano, váš postup s For Each by také šel, ale takto:

1
2
3
4
5
6
7
8
9
10
Private Sub Button1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button1.Click
  Dim col As New Collection
  For Each c As System.Windows.Forms.Control In Form2.Controls
    col.Add(c)
  Next
 
  For Each nc As System.Windows.Forms.Control In col
    Panel1.Controls.Add(nc)
  Next

Cyklus s Controls.Count je jednodušší.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Ano, už to vidím, děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback