Podstawowe klasy projektanta
Wdrożenie wszystkich projektanci IDesigner interfejs, który definiuje metody podstawowego interfejsu projektanta..NET Framework zapewnia także zestaw klas podstawowych projektanta, które dostarczają metod, które mogą być użyteczne dla projektantów, obsługujących określonych typów elementów lub formantów.
Interfejs IDesigner
Projektant klasa musi implementować IDesigner interfejsu, jak pokazano w poniższym przykładzie kodu.
Public Interface IDesigner
Sub Dispose()
Sub Initialize(component As IComponent)
' Other methods.
...
ReadOnly Property Component() As IComponent
' Other properties.
...
End Interface
public interface IDesigner {
void Dispose();
void Initialize(IComponent component);
// Other methods.
...
IComponent Component {
get;
}
// Other properties.
...
}
Initialize Metoda IDesigner nazywa się po części dla projektanta zostało zlokalizowane i zainicjowana i została utworzona przez projektanta.Można zastąpić Initialize metody do wykonywania czynności, które powinny występować na części lub czas inicjowania projektanta.Nie można zastąpić inicjowania konstruktora składnika, ale można ją uzupełnić lub zresetować właściwości, które konsument inicjuje.Component Właściwość IDesigner jest ustawiany za pomocą tej metody inicjacji.Zawsze powinien wywołać base.Initialize(component) z programu Initialize metodę, jeżeli zastąpienie tej metody.Ma dostęp do składnika, z IDesigner z jego Component właściwości.
Component Właściwość zapewnia dostęp do składnika, który jest skojarzony projektanta.Ta właściwość jest ustawiona w chwili utworzenia Projektanta obiektów i jego Initialize wywoływana jest metoda.Składnik ma witrynę skojarzony z nim i Projektant można użyć tej witryny do uzyskania usług od hosta projektanta.
DoDefaultAction Metoda jest wywoływana po dwukrotnym kliknięciu składnika lub formantu.
Verbs Właściwość może być zastąpiona na powrót DesignerVerbCollection , zawiera obiekty, które są niezbędne rozszerzenie elementów menu w menu skrótów dla składnika.
Dispose Metoda jest wywoływana, gdy obiekt projektant musi zostać zniszczone.Jest ona wywoływana w każdym przypadku, gdy składnik jest usunięte z pojemnika na projekt.
Klasa podstawowa projektanta dla składników
ComponentDesigner Klasy implementuje IDesigner i IDesignerFilter interfejsów zaoferować dodatkowe metody, które mogą być użyteczne dla projektantów niektórych składników.
Klasa podstawowa projektanta dla formantów Windows Forms
Projektant klasą bazową dla formantów Windows Forms jest ControlDesigner.Ta klasa pochodzi od ComponentDesigner i zapewnia dodatkowe metody przydatne do dostosowywania wyglądu i zachowania kontroli Windows Forms.Przykładowa implementacja Projektant Windows Forms, zobacz Porady: implementowanie projektanta na potrzeby sterowania.
DocumentDesigner Klasy zapewnia podstawowy Projektant rozszerzanie zachowanie trybu projektowania i dostarczanie widok trybu projektowania na poziomie katalogu głównego, Control który obsługuje formanty zagnieżdżone i odbiera wiadomości przewijania.Aby uzyskać więcej informacji, zobacz Porady: tworzenie formantu formularzy Windows wykorzystującego funkcje czasu projektowania.
[!UWAGA]
Należy dodać odwołanie do zestawu czasu projektowania, System.Design.dll.Ten moduł nie jest dołączony do.NET Framework 4 profilu klienta.Aby dodać odwołanie do System.Design.dll, należy zmienić projektu docelowego ramy do .NET Framework 4.
Klasa podstawowa projektanta dla aplikacji ASP.NET Server formantów
Projektant klasy podstawowej dla aplikacji ASP.Formanty serwera netto jest ControlDesigner.Ta klasa zapewnia podstawowe funkcje dla renderowania HTML podczas projektowania niestandardowych.
Klasy podstawowe dla integracji w czasie projektowania
TypeConverter Klasy przewiduje konwersja typu z reprezentację tekstową i klasy podstawowej.Aby uzyskać więcej informacji na temat typu konwerterów, zobacz Porady: implementowanie konwertera typów lub Konwersja uogólnionych typów.
UITypeEditor Klasy zawiera klasy podstawowej, która może pochodzić od i rozszerzyć do wdrożenia Edytor typ niestandardowy dla środowiska czasu projektowania.Więcej informacji na temat wdrażania UITypeEditor, zobacz Przegląd edytorów typów interfejsu użytkownika.
Klasy podstawowe dla projektanta wygląd i zachowanie
Behavior Klasy może zostać rozszerzona na opracowanie dowolnego typu zachowanie interfejsu użytkownika, łącznie z zaznaczenia, przeciągnij i zmień rozmiar zachowania.Malowanie i testowanie hit są wykonywane przez Glyph klasy.
Aby uzyskać więcej informacji, zobacz Przegląd obsługi zachowań.
[!UWAGA]
Należy dodać odwołanie do zestawu czasu projektowania, System.Design.dll.Ten moduł nie jest dołączony do.NET Framework 4 profilu klienta.Aby dodać odwołanie do System.Design.dll, należy zmienić projektu docelowego ramy do .NET Framework 4.
Klasy podstawowe dla projektanta ładowarki
BasicDesignerLoader Klasy stanowi implementację IDesignerLoaderService interfejsu.A BasicDesignerLoader jest pełna implementacja program ładujący projektanta bez niczego odnoszących się do formatu trwałości.
CodeDomDesignerLoaderKlasa abstrakcyjna, która zawiera program ładujący projektanta pełnego bazuje na kod Document Object Model (CodeDOM).
Klas bazowych do serializacji Designer
CodeDomSerializerBase Klasy zawiera klasa podstawowa dla CodeDomSerializer klasy.CodeDomSerializerBase Klasa jest używana jako udostępnionego base między CodeDomSerializer i TypeCodeDomSerializer klasy.
DesignerSerializationManager Klasy stanowi implementację IDesignerSerializationManager interfejsu.
Aby uzyskać więcej informacji, zobacz Przegląd serializacji projektanta.
Klasa podstawowa dla tagów inteligentnych
DesignerActionList Klasy zawiera klasy podstawowej dla typów, które zdefiniować listę elementów, używane do tworzenia panelu tagu inteligentnego.Aby uzyskać więcej informacji, zobacz Porady: dołączanie tagów inteligentnych do składnika Windows Forms.
[!UWAGA]
Należy dodać odwołanie do zestawu czasu projektowania, System.Design.dll.Ten moduł nie jest dołączony do.NET Framework 4 profilu klienta.Aby dodać odwołanie do System.Design.dll, należy zmienić projektu docelowego ramy do .NET Framework 4.
Klasa bazowa dla niestandardowego układu
LayoutEngine Klasy przewiduje wykonawczych układ silniki klasy podstawowej.TableLayoutPanel i FlowLayoutPanel kontroluje wykorzystanie LayoutEngine klasy, aby zapewnić zachowanie układu.Aby uzyskać więcej informacji, zobacz Porady: implementowanie aparatu niestandardowego układu.
Projektanci standardowy
Windows Software Development Kit (SDK) Zawiera zestaw projektantów do obsługi określonych typów składników.Nazwane projektanci tych składników, projekt, ze słowem Projektant sufiksem.Na przykład, Projektant dla Control klasa jest ControlDesigner.
Typowe funkcje Designer
Dostęp do usług w czasie projektowania z projektanta
Większość typów usług w czasie projektowania mogą być żądane przez GetService metody przekazując typ usługi na żądanie.There is a GetService method on Component and ComponentDesigner.Istnieje również GetService metody na IServiceProvider, który jest implementowana przez ISite zwrócone przez Site właściwości IComponent w trybie projektowania.
Poniższy kod ilustruje sposób uzyskiwania IDesignerHost interfejsu usługi i IMenuCommandService za pomocą GetService metody.
Aby uzyskać więcej informacji, zobacz Porady: uzyskiwanie dostępu do usług pomocy technicznej czasu projektowania.
Poniższy kod demonstruje, jak uzyskać usługi z interfejsem usługodawca tryb projektowania.
' Obtain an IDesignerHost service from the design-time environment.
Dim host As IDesignerHost = CType(Me.Component.Site.GetService(GetType(IDesignerHost)), IDesignerHost)
' Obtain an IMenuCommandService service.
Dim mcs As IMenuCommandService = CType(Me.Component.Site.GetService(GetType(IMenuCommandService)), IMenuCommandService)
// Obtain an IDesignerHost service from the design-time environment.
IDesignerHost host = (IDesignerHost)this.Component.Site.GetService(typeof(IDesignerHost));
// Obtain an IMenuCommandService service.
IMenuCommandService mcs =
(IMenuCommandService)this.Component.Site.GetService(typeof(IMenuCommandService));
Uzyskiwanie dostępu do składników programu Project z projektanta
Projektant można uzyskać dostęp do składników w dokumencie w trybie projektowania, uzyskując dostęp do Components kolekcji Container właściwość IDesignerHost interfejsu usługi.Poniższy przykład kodu pokazuje, jak dostęp do składników w bieżącym projekcie w trybie projektowania.
' Obtains an IDesignerHost service from the design-time environment.
Dim host As IDesignerHost = CType(Me.Component.Site.GetService(GetType(IDesignerHost)), IDesignerHost)
' Gets the components container for the current design-time project.
Dim container As IContainer = host.Container
' The host.Container IContainer contains each IComponent in the project.
// Obtains an IDesignerHost service from the design-time environment.
IDesignerHost host = (IDesignerHost)this.Component.Site.GetService(typeof(IDesignerHost));
// Gets the components container for the current design-time project.
IContainer container = host.Container;
// The host.Container IContainer contains each IComponent in the project.
Po uzyskaniu dostępu do kolekcji elementów, można użyć TypeDescriptor metody i PropertyDescriptor obiekty, aby określić typy i ustawiania wartości właściwości składników.Można również utworzyć przy użyciu składników CreateComponent metoda IDesignerHost interfejsu.
Rozszerzanie projektanta
Gdy składnik, który ma skojarzone designer można dziedziczyć, Projektant klasy podstawowej jest skojarzony z pochodnych składnika domyślnie.Różne designer można skojarzyć z składnik, stosując DesignerAttribute atrybut, który określa typ designer, aby skojarzyć ze składnikiem.Bardzo często pochodnych składnik ma projektanta, który rozszerza podstawowy projektanta.
Aby uzyskać więcej informacji, zobacz Porady: implementowanie projektanta na potrzeby sterowania.
Aby rozszerzyć projektanta
Zdefiniowanie klasy, która pochodzi od klasy podstawowej projektanta.
Skojarzyć nową klasę Projektant składnika przez zastosowanie DesignerAttribute.
Poniższy przykład kodu definiuje projektanta, który rozszerza LabelDesigner i kojarzy ją z etykietę niestandardową, która rozszerza Label.
Namespace MyControls.Design
Public Class MyLabelDesigner
Inherits System.Web.UI.Design.WebControls.LabelDesigner
End Class
End Namespace
Namespace MyControls
<Designer(GetType(MyControls.Design.MyLabelDesigner))> _
Public Class MyLabel
Inherits System.Web.UI.WebControls.Label
End Class
End Namespace
namespace MyControls.Design {
public class MyLabelDesigner : System.Web.UI.Design.WebControls.LabelDesigner {}
}
namespace MyControls {
[Designer(typeof(MyControls.Design.MyLabelDesigner))]
public class MyLabel : System.Web.UI.WebControls.Label {}
}
[!UWAGA]
Jeśli są definiowane projektanta dla klasy, która jest zapieczętowany lub nie ma innych klas, użycie lub dziedziczą swoje designer, można wprowadzać konstruktora klasy wewnętrznego użytkownika zestawu.Projektant host nadal będzie można utworzyć wystąpienia programu designer, ale nie przyczyni się do modelu obiektu publicznego.
Zobacz też
Zadania
Porady: uzyskiwanie dostępu do usług pomocy technicznej czasu projektowania
Porady: uzyskiwanie dostępu do pomocy technicznej czasu projektowania w formularzach systemu Windows
Koncepcje
Porady: implementowanie projektanta na potrzeby sterowania