Eigenschaft in UserControl eine Variable zuweisen

12/01/2008 - 10:03 von PimmingerA | Report spam
Ich habe in einem benutzerdefinierten Steuerlement vom Typ UserControl eine
Eigenschaft definiert welche die Verbindungsparameter zu einer Datenbank
angeben.
Dies ist einfach eine Instanz einer Klasse welche Eigenschaften wie DBName,
UserNamer,... usw. enthàlt.
Wenn ich nun dieses UserControl in ein Windowsform einbette kann ich diese
Parameter im Visual C# 2005 Designer im Eigenschaftsfenster zu Entwurfszeit
einstellen. Bis hier her funktioniert alles einwandfrei.
Nun habe ich in meinem Host-Form eine Instanz von den
Verbindungseingenschaften erstellet die durch Paramter beim Start der
Applikation gefüllt werden. Diese Instanz möchte ich nun meinem aufzurufenden
UserControl übergeben.
Zuerst hàtte ich probiert einfach die vom Designer erstelle partial class zu
àndern und dem Konstruktor des UserControls diese Instanz zu übergeben.
Und hier hat das Visual-Studio anscheinend noch Macken.
Denn anfangs hat dies funktioniert. Nach einigen anderen Änderung hat er
aber dies nicht merh zugelassen. Also wenn ich mit F5 starte dann hat es
funktioniert, aber wenn ich zur Entwurfszeit auf das HostForm geklickt habe
ist eine Fehlermeldung gekommen, dass ich das Form nicht öffnen könne, da die
zu übergebende Instanz an das UserControl nirgends deklariert ist.
Ich schàtze das liegt daran dass in der *.Designer.cs die Deklaration der
Variable in der 2. partial class in der die benutzerdefinierten Klasse nicht
eingelesen wird, wenn ich das Formular im Designer öffnen will.

Tja und darum habe ich begonnen mich mit den Eigenschaften zu spielen, in
dem ich nun die Instaz im Eigenschaftfenster übergeben will (so wie ich zB
bei einem DataGridView die Eigenschaft DataSource auch einfach über eine
Auswahl eines geeigneten vorhandenen Objektes auswàhlen kann) ... nur bin ich
nun nach 5 Stunden Querverweis, Code Snippets und Forumbeitràge am Ende und
bringe es einfach nicht auf die Reihe.

Nachdem ich nun alles der Lànge und Breite erklàrt habe dass ihr hoffentlich
alle Infos habt, könnt ihr mir nun vielleicht folgende Fragen beantworten:

1.) Wie wird in der Praxis vorgegangen wenn ich einem UserControl Daten in
Form einer "komplexen" selbstdefinierten Datenstruktur übergeben will.

2.) Wie kann ich eine Variable (wie es z.B. bei DataSource eines
DataGridViews funktionert) für eine Eigenschaft im Designmodus im
Eigenschaftsfenster auswàhlen?


Vielen Dank für Eure Anregungen und Hilfestellungen im Voraus
 

Lesen sie die antworten

#1 Carl Schaffert
12/01/2008 - 11:39 | Warnen spam
Hallo PimmingerA... ungewöhnlicher Name... na ja...

das Mindeste was du benötigst wàre das:
http://msdn2.microsoft.com/de-de/li...tconverter(VS.80).aspx

ansonsten kannst du dir auch DesignTime-Unterstützung für dein Control
anschauen:

http://msdn2.microsoft.com/de-de/library/37899azc(VS.80).aspx

und hier:

http://msdn2.microsoft.com/de-de/library/h51z5c0x(VS.80).aspx

dort findest du auch jede Menge Samples... wenn du damit noch nie zu tun
hattest, dauert das aber locker mehr als 5 Stunden ;-)

Ersteres (ExpandableObjectConverter) sollte aber für dein Vorhaben erst mal
ausreichen!

Gruß Carl

Ähnliche fragen