VimpMedlem sedan juli 20022 537 inlägg 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?
GladhMedlem sedan maj 20012 812 inlägg 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
VimpMedlem sedan juli 20022 537 inlägg 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?
VimpMedlem sedan juli 20022 537 inlägg Kan tillägga att jag testade med att lägga in det här, men utan framgång:
ctrlControl.Visible = True
Marcus EMedlem sedan maj 20021 466 inlägg 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.
VimpMedlem sedan juli 20022 537 inlägg 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)
VimpMedlem sedan juli 20022 537 inlägg Marcus.. Vet du någon sida där de tar upp MDI?
GladhMedlem sedan maj 20012 812 inlägg 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
VimpMedlem sedan juli 20022 537 inlägg 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)
nikoMedlem sedan juni 20022 599 inlägg
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?
VimpMedlem sedan juli 20022 537 inlägg Jag kör .NET Framework 1.0 tillsammans med Visual Studio .NET 2002.
FrmTest är en usercontrol (System.Windows.Forms.UserControl).
nikoMedlem sedan juni 20022 599 inlägg
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.