Programový přístup k formulářům ve složce v projektu   zodpovězená otázka

VB.NET, Algoritmy, WinForms, Reflexe

Zdravím,

mám projekt a v něm složku, která obsahuje formuláře. Rád bych programově zjistil kolik formulářů je ve složce a všechny přiřadil jako Children k MdiForm.

For Each Formular As Form In ???
  Form.MdiParent = Me
  Form.Show()
End For

Děkuji

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

Nevím, jestli se za běhu aplikace dá zjistit, v jaké složce byl daný soubor s kódem (u Resources to jde, ale u kompilovaných věcí podle mě ne). Je tedy nutné, aby formuláře, které chcete jako MDI potomky umístit do velkého formuláře, začínaly nějakou stejnou předponou (např. child, záleží na vás). Pak stačí tento kód - není to nic pro začátečníky, je to pokročilá technika Reflection, která má mnoho nevýhod, ale fungovat by měla.

Imports System.Reflection
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim asm As Assembly = Assembly.GetExecutingAssembly()
        For Each t As Type In asm.GetTypes()
            'projít všechny typy v aplikaci
            If t.IsSubclassOf(GetType(Form)) Then
                If t.Name.StartsWith("child") Then
                    'pokud je daný typ poděden z Form a název, vytvořit instanci
                    Dim f As Form = Activator.CreateInstance(t)
                    f.MdiParent = Me
                    f.Show()
                End If
            End If
        Next

    End Sub
End Class

Doufám, že to bude stačit. Formuláře, které se mají vytvořit, označte předponou child, takže něpříklad childZakazky, childNabidky atd.

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

Děkuji za kódy, snad to bude fungovat.

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