webForumDet fria alternativet

Öppna win form i main?

.NET

12 svar · 353 visningar · startad av Vimp

Medlem sedan juli 20022 537 inlägg
Frågan#1

Hej,,

Jag har inte använt win forms så mycket i vb.net, men nu tänkte jag göra ett program som jag ska unna administrera sidan ifrån.
Problemet är att jag vill kunna ladda en windows form i "main-formen".
Jag skickar med ett screenshot...
Där gubben är vill jag ladda alla formsen.
Går det inte att använda placeholdern som finns i asp.net?

ojojoj.jpg
Medlem sedan maj 20012 812 inlägg
#2

Du skall använda dig av UserControlls.

Alltså din main-formen innehåller inga objekt (knappar och sånt) utan endast olika Panels.

I de olika Panels så laddar du sedan de olika UserControlls som du har skapat. Det fungerar ungefär som placeholdern i ASP.NET.

- M

Medlem sedan juli 20022 537 inlägg
#3

Jag testade att lägga en panel i main som heter pnlMain.
Sen la jag in den här koden:

    Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
        Dim ctrlControl As New Control("frmtest.vb")
        pnlMain.Controls.Add(ctrlControl)
    End Sub

Det händer ingenting när jag trycker på "Medlemmar" i menyn nu.
Är det något mer som behövs i koden?

Medlem sedan juli 20022 537 inlägg
#4

Kan tillägga att jag testade med att lägga in det här, men utan framgång:

ctrlControl.Visible = True
Medlem sedan maj 20021 466 inlägg
#5

Du måste ha positioner också.
Prova Dock = DockStyle.Fill

Ett annat sätt är att använda MDI. Då kan du ha flera fönster inom samma fönster.

Medlem sedan juli 20022 537 inlägg
#6

Händer fortfarande ingenting. :(
Är dte något fel på denna kod?

        Dim ctrlControl As New Control("frmtest.vb")

        With ctrlControl
            .Visible = True
            .Dock = DockStyle.Fill
        End With

        pnlMain.Controls.Add(ctrlControl)
Medlem sedan juli 20022 537 inlägg
#7

Marcus.. Vet du någon sida där de tar upp MDI?

Medlem sedan dec. 2000399 inlägg
Medlem sedan maj 20012 812 inlägg
#9

hmmm... nu kan jag inte VB men i C# så skapar man sin UserControl precis som vilket annat objekt.

Säg att jag har en main som har en panel, som jag döpt till panelMiddle och sedan har jag en UserControl som jag vill lägga till till denna panel då skriver man så här.

MyUserControl myUserControl = new MyUserControl();

myUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
.
.
.

panelMiddle.Control.Add(myUserControl)

Det bör ju fungera likadant i VB. Annars så kan du ju göra det i VS.NET och sedan se hur koden ser ut och utgå därifrån.

- M

Medlem sedan juli 20022 537 inlägg
#10

Tackar Magnus, fungerar perfekt nu :)
Blev så här med VB:

        Dim frmTest As New frmTest()

        With frmTest
            .Visible = True
            .Dock = DockStyle.Fill
        End With

        pnlMain.Controls.Add(frmTest)
Medlem sedan juni 20022 599 inlägg
#11

fungerar perfekt nu

Nu blir jag väldigt nyfiken. Controls.Add vill ha ett argument av typen System.Windows.Forms.Control och ditt frmTest är väl ett Winform (System.Windows.Forms.Form)? Vilken FrameWork-version kör du?

Medlem sedan juli 20022 537 inlägg
#12

Jag kör .NET Framework 1.0 tillsammans med Visual Studio .NET 2002.

FrmTest är en usercontrol (System.Windows.Forms.UserControl).

Medlem sedan juni 20022 599 inlägg
#13

FrmTest är en usercontrol

Tack. Jag tolkade det som att du lyckades lägga ett Winform på en panel rakt av och att jag hade missat nåt väsentligt.

259 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)