Übergabe einer Klasse zu einem UserControl

01/10/2008 - 10:41 von Jafar | Report spam
Hallo

wie kann ich diese senario realiesieren.

in meinem MDI Anwendung habe ich ein Formular (Form1), der eine TabControl
mit mehr als 10 Tabs enthàlt.
In jeder Tab sollen sehr Viele controls wie Textbox and etc. rein kommen.
Aber da nicht immer alle Tabs genutyt oder aufgerufen werden habe ich für
jede Tab eine Usecontrol erstellt und die Controls in UC reingepackt.
Usercontrol werden in runtime an Form1 Tab gebunden.wenn man edie Tab
anklickt. (event tab.createhandle).
Das funktieniert auch fein,
Nun in meinem Form1 declariere ich eine Klasse, die ich weiter geben will zu
UC.

Ich tue es so:

in From1:

Dim cls1 a new Class1

in meinem UserControl:

Publich cls1 as Class1

und bei Control.Add in runtime in Form1 :

UserControl1.cls1 = cls1



Meine Frage ich ist:

ist diese Vorgehweise richtig?


Danke
Jafar
 

Lesen sie die antworten

#1 Elmar Boye
01/10/2008 - 11:57 | Warnen spam
Hallo Jafar,

"Jafar" schrieb...
in meinem MDI Anwendung habe ich ein Formular (Form1), der eine TabControl
mit mehr als 10 Tabs enthàlt.
In jeder Tab sollen sehr Viele controls wie Textbox and etc. rein kommen.
Aber da nicht immer alle Tabs genutyt oder aufgerufen werden habe ich für
jede Tab eine Usecontrol erstellt und die Controls in UC reingepackt.
Usercontrol werden in runtime an Form1 Tab gebunden.wenn man edie Tab
anklickt. (event tab.createhandle).



CreateHandle ist vermutlich nicht so günstig, denn das Ereignis
wird ausgelöst, wenn das interne Fensterhandle erstellt wird,
was unter Umstànden öfter geschieht (RecreateHandle).

Besser wàre das Selected Ereignis des übergeordneten TabControls
oder auch TabPage.Enter.

Nun in meinem Form1 declariere ich eine Klasse, die ich weiter geben will
zu UC.



Du schreibst leider nicht, welche Funktion die Klasse generell haben soll.

Ich tue es so:
in From1:
Dim cls1 a new Class1

in meinem UserControl:
Publich cls1 as Class1



Besser verwendest Du eine Eigenschaft, dann kannst Du im UserControl
auf Änderungen reagieren, wenn spàtere eine andere Klassen-Instanz
zugewiesen werden soll(te).
Beim Zuweisen an eine Variable kriegst das UserControl das nicht mit.

und bei Control.Add in runtime in Form1 :
UserControl1.cls1 = cls1



Wenn Du UserControl1 zur Laufzeit erstellst, kannst Du ihm auch
einen Konstruktor verpassen, der Class1 übernimmt, damit kann
die zusàtzliche Codestrecke entfallen.

Meine Frage ich ist:

ist diese Vorgehweise richtig?



Grundsàtzlich ist daran (bis auf die kleinen Details) nichts auszusetzen.

Wobei aber die Information fehlt, was Class1 im UserControl bewirken soll.
Wenn Du Class1 von System.ComponentModel.Component ableitest,
kannst Du das zur Entwicklungszeit an die UserControl Eigenschaft binden.

Gruß Elmar

Ähnliche fragen