Sitter o pillar på ett kul projekt, där programmet skulle bli väldigt mycket snyggare gjort om jag skulle lyckas med att få en form hamna i en panel (eller nästan vad som helst egentligen), som självklart ligger i en annan form.. alltså Får jag bara fråga: varför? Är det någon speciell funktionallitet hos ett fönster du vill ha? Skulle du kunna tänka dig att göra om formulären till System.Windows.Forms.UserControl istället ? Det var bra svar från båda två =) Tack...Infoga en annan form i en panel
form 1 innehåller en panel
i panel ligger form 2.
Det skulle lätta upp min programmering en hel del, då jag använder mycket kod till många panels.
Nån som lyckats?Sv: Infoga en annan form i en panel
Om det är själva innehållet kan du helt enkelt göra en loopa och flytta över rubbet (form.Controls -> panel.Controls)
Om det är fönstertiteln och det är det t.ex. mdi som gäller. Antingen ber du dne skapa det åt dig genom någon ismdiparent-egenskaper eller så lägger du till en egen mdi-container eller vad den nu heter. Alternativt att du skippa mdi och istället grötar med win32 api:tSv: Infoga en annan form i en panel
Låt säga att du har 2 UserControl's, uc1 och uc2.
Du har också ett formulär som har en panel p.
Då kan du göra såhär:
if ShowUc1 then
p.Controls.Remove(uc2)
p.Controls.Add(uc1)
else
p.Controls.Remove(uc1)
p.Controls.Add(uc2)
end ifSv:Infoga en annan form i en panel
Men jag kollade in win32API;n och den fungerade hyffsat fint för mitt program.
Varför jag vill ha det så är helt enkelt att jag använder en jättefin activex, som skapar snygga tabbar för diverse avdelningar i programmet. Men det finns en bugg i activex-filen när det börjar bli mycket som tvingar en att lägga in alla kontroller på nytt i tabben från scratch. Riktigt ful bugg.
Så jag tänkte att jag lika gärna kunde göra så att jag bara laddar in en form på varje tab. =)
Om det är någon annan som vill veta hur man gör så ser koden ut såhär:
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As IntPtr
Private Sub frmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fForm as New Form1
SetParent(fForm.Handle, Me..Handle)
End Sub