Zadání

Export struktury formuláře do XML

Cvičení

Windows Forms

Windows GUI
SSŠVT

Export struktury formuláře do XML (XML, rekurze)

Zadání

Cvičení na zvětšování/zmenšování prvků na formuláři definuje formulář s následující strukturou:

Přidejte do formuláře metodu, která ze struktury formuláře vygeneruje soubor v XML formátu. Využijte rekurzi.

Jednotlivé elementy ve výsledném XML se budou jmenovat podle datových typů jim odpovídajících ovládacích prvků z formuláře.

Ve cvičení na zvětšování/zmenšování ovládacích prvků je formulář Form1. Formulář Form1 má svůj datový typ Form1 (který dědí z Form). Na formuláři jsou panely panelEnlargeDiminish a panelSelectZoom s datovým typem Panel. Je tam také tlačítko buttonDo, které má typ Button. Na panelu panelEnlargeDiminish jsou radio buttony radioButtonEnlarge a radioButtonDiminish, jejichž datový typ je RadioButton. Obdobně u těch radio buttonů na panelu panelSelectZoom.

Typ objektu zjistíte v .NETu tak, že zavoláte metodu GetType() (kterou všechny datové typy dědí ze třídy object). Ta vám vrátí objekt typu System.Type a ten má vlastnost Name (případně FullName), kterou zjistíte jméno toho typu ("Form1", "Panel", "Button", "RadioButton" apod.).

Příklad výsledného XML:

<Form1>
    <Panel>
        <RadioButton />
        <RadioButton />
    </Panel>
    <Panel>
        <RadioButton />
        <RadioButton />
        <RadioButton />
        <RadioButton />
    </Panel>
    <Button />
</Form1>
        

Jiný příklad: Na formuláři Form1 je panel panelBig a tlačítko buttonTest. Na panelBig jsou labelName, textBoxName a dva další panely panelSmall a panelSmaller. Na panelSmall je ještě listbox listBoxColors a na panelSmaller je tlačítko buttonClose.

Form1
panelBig
labelName
textBoxName
panelSmall
listBoxColors
panelSmaller
buttonClose
buttonTest

Struktura formuláře:

Výsledné XML:

<Form1>
    <Panel>
        <Label />
        <TextBox />
        <Panel>
            <ListBox />
        </Panel>
        <Panel>
            <Button />
        </Panel>
    </Panel>
    <Button />
</Form1>