2009-04-01 12 views

Odpowiedz

35

zmienić formę dziedziczyć z UserControl zamiast formy, a następnie rozwiązać każdy kompilacji błędów.

+1

Właśnie znalazłem tę odpowiedź podczas samodzielnego rozwiązywania tego samego problemu. Niesamowite, jakie to łatwe. –

+0

Jak to zrobić w VB.NET? Formularz jest po prostu zadeklarowany jako "Public Class TimeSheetGrid", bez wyraźnego "Dziedziczenia". – ProfK

+0

W programie Visual Studio 2012 (przynajmniej) lub za pomocą stosunkowo prostych formularzy próbowałem, czyniąc to właśnie tworzy kod użyteczności, ale nie można otworzyć formantu w projektancie VS. Brak błędów, ale po otwarciu projektant pokazuje tylko listę wszystkich elementów sterujących, podobnie jak w przypadku elementów dialogowych pliku/etc. ale nie widzisz układu sterowania. Jeśli ktoś wie, jak to naprawić, powiedz! –

8

Jest też sposób osadzić formularz w kontroli: Oto kod w VB:

Public Shared Sub ShowFormInControl(ByRef ctl As Control, ByRef frm As Form) 
    If ctl IsNot Nothing AndAlso frm IsNot Nothing Then 
     frm.TopLevel = False 
     frm.FormBorderStyle = FormBorderStyle.None 
     frm.Dock = DockStyle.Fill 
     frm.Visible = True 
     ctl.Controls.Add(frm) 
    End If 
End Sub 

myślę nabył ten kod z innego wątku na SO, ale nie pamiętam gdzie, więc Przepraszam, jeśli to jest twój fragment kodu!

+0

To samo działa w języku C#, oczywiście. – GWLlosa

+1

Myślę, że musiałbyś zmienić kilka rzeczy, żeby działały w języku C#, inaczej kompilator byłby zły ... – Joey

0

Nie mówię, że powinieneś to zrobić teraz, ale w przyszłości możesz spojrzeć na MEF. Jest to szkielet dla (między innymi) tworzenia złożonych aplikacji, które jak brzmi, mogą być tym, co próbujesz osiągnąć.

0

Użyłem rozwiązania @Neil Barnwell z dodatkiem. ręcznie edytować plik .vbprog i zmienił „podtyp” Forma na „UserControl”:

<SubType>UserControl</SubType> 

Pozwala to na ikonę w Eksploratorze projektu, aby pokazać jako kontroli użytkownika, a nie formę.

Powiązane problemy