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):

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
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:

  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
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

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