Winforms - Master formularer i Windows form

Indlæg af Hanne Mølgaard Plasc

Problem



Ligesom Master sider i ASP.NET, har vi et lignende koncept til Windows Form applikation. Så jeg behøver ikke at gentage den samme del af formularen (Header og footer) mange gange igennem applikationen.

Bedste reference


Ja.


Hvad du skal gøre er at oprette din 'Master' formular, tilføj i alt brugerinterface, du vil have, standardknapperne osv.


For ting som knapper opretter jeg typisk de metoder, der håndterer klikhændelserne som 'virtuelle', så jeg kan implementere dem i den egentlige formular, som jeg derefter bygger.


Når 'Master' -formularen er opbygget, skal du højreklikke på projektet og vælge 'Nyt element'. Når du har gjort det, kan du, hvis du er i VS.Net 2008, klikke på kategorierne 'Windows Forms' og derefter vælge 'Arvelig formular'.


Når du har gjort det, bliver du bedt om at arve fra hvilken form i projektet. Vælg blot 'master' -formularen, og du skal indstilles.

Andre referencer 1


Opret hovedformularen som en formular med overskrift og sidefod, men lad midten være tom.


Implementér 'indre sider' som UserControl med en fælles grænseflade, og skift dem som du har brug for det. (Header, Contentpanel og Footer er Windows.Form.Panel).


-------------------------------
| Header                      |
-------------------------------         \_\_\_\_\_\_\_\_\_\_\_\_\_\_
|                             |         |            |
|         ContentPanel        |   <---- | MonkeyEdit |
|                             |         |\_\_\_\_\_\_\_\_\_\_\_\_|
-------------------------------
| Footer                      |
-------------------------------


Og implementere indhold som


public class MonkeyEdit : UserControl, IContent
{

}


Gennemfør en grænseflade, det er nyttigt, men ikke nødvendigt. Indstil derefter MonkeyEdit i ContentPanel med en Dock.Fill. Du kan omdanne 'master form' også, som du ser her i en anden post.

Andre referencer 2


Ikke rigtig det samme som master sider, men du kan oprette en kontrol (f.eks. Baseret på UserControl) med header og footer, at alle dine andre former kan arve (eller konstruere) efter behov. [3]

Andre referencer 3


Du kan opnå noget lignende med arv; du opretter nogle forældreformularer med kontroller, der gentages, og brug derefter denne forælder til hver brugerdefineret formular du har brug for.

Andre referencer 4


Tilføj en klasse, der arver fra Form, tilføj overskrifterne og footers (i kode) og lad alle nye former arve fra denne klasse.

Andre referencer 5


Master side har mulighed for at angive indholdsområdet, hvor siderne skal indlejres. Så formulering af en formular, sig Form B fra Form A og få funktioner i moderformularen, beviser ikke punktet.
Hvad Boj har nævnt, giver mere mening, hvor vi bruger paneler.