Laden...

UserControl Zugriff

Erstellt von FeelFlow vor 13 Jahren Letzter Beitrag vor 13 Jahren 4.536 Views
F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren
UserControl Zugriff

Guten Morgen!

In meinen derzeitigen Projekt möchte ich eine UserControl verwenden.
Bisher auch alles schön und gut, habe die UserControl erstellt, zu meiner Projektmappe hinzugefügt und kann sie auch auf meiner Form anzeigen

UserControl UC1 = new myUC();
tabControl1.TabPages[0].Controls.Add(UC1);

soweit klappt alles.

Die UC beinhaltet 4 TextBoxen und eine ComboBox.

Nun habe ich das Problem, dass ich keinen zugriff auf die jeweiligen Controls in der UC hinbekomme. Habe schon verschiedene getter/setter gebaut die ich gefunden habe, aber irgendwie kann ich darauf nicht zugreifen. Hab hier das Galileo Handbuch aufn Tisch liegen, doch leide komme ich damit nicht so wirklich weiter.

Kann mir da jemand einen Rat geben?

Vielen Dank

Flo

F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren

GRRRR...

Ich habe sogar meinen Fehler gleich mitgepostet!!!!!

UserControl UC1 = new myUC();
tabControl1.TabPages[0].Controls.Add(UC1); 

<-- FALSCH

/*!!!!!!*/myUC UC1 = new myUC();
tabControl1.TabPages[0].Controls.Add(UC1); 

<-- RICHTIG

Warum fallen solche Fehler erst auf, nachdem man einen ganzen Tag danach gesucht hat???

925 Beiträge seit 2004
vor 13 Jahren

Jupp, manchmal hat man das. Hätte das mit C# 4.0 aber nicht sogar funktionieren sollen?

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo 7.e.Q,

Hätte das mit C# 4.0 aber nicht sogar funktionieren sollen?

der gezeigte, originale Codeausschnitt funktioniert auch unter .NET 1.0. Der Fehler, von dem FeelFlow, wird erst in den folgenden Codezeilen auftreten und das unter .NET 1.0 genauso wie unter .NET 4.0.

Ist aber alles eh irrelevant, denn ...

Hallo FeelFlow,

Nun habe ich das Problem, dass ich keinen zugriff auf die jeweiligen Controls in der UC hinbekomme.

das solltest du auf keinen Fall tun. Ein Form oder Control sollte nie auf die Controls eine anderen Forms oder Controls zugreifen. Die enthaltenen Controls gehören zu den Interna. Schreibt stattdessen Properties und Methoden, die die eigentlich gewünschte Funktionalität bieten, z.B. einen Text oder andere Werte zu setzen und auszulesen.

herbivore

F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren

Schreibt stattdessen Properties und Methoden, die die eigentlich gewünschte Funktionalität bieten, z.B. einen Text oder andere Werte zu setzen und auszulesen.

Wie gesagt... hab ich gemacht

Habe schon verschiedene getter/setter gebaut

Der vollständigkeit halber: (um alles für die Nachwelt zu dokumentieren)


public string Text
        {
            get
            {
                return this.TextBox.Text;
            }
            set
            {
                this.TextBox.Text= value;
            }
        }

F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren

Nun ergibt sich leider ein Problem.

In der UC ist eine Combobox, die auch wie gewünscht mit einträgen befüllt wird.

Danach will ich einen bestimmten Eintrag auswählen:


string Select = "something";
UC.cbSelect = Select;

und in der UserControl steht:


public string cbSelect
        {
            get
            {
                return this.ComboBox.SelectedItem.ToString();
            }
            set
            {
                this.Combobox.SelectedItem = value;
            }
        }

Leider bleibt das ganze immer beim ersten Eintrag stehen.
Habe auch schon Werte im Debug überprüft.
this.Combobox.SelectedItem --> hat den Wert des ersten Eintrags
value --> hat den string von den Eintrag, den ich haben will.

Warum wird dann nicht der Richtige Eintrag gewählt?

Hatte vorher die Combobox nicht in einer UserControl, sondern direkt auf meiner Form und da funktionierte es!

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo FeelFlow,

setze im Setter Combobox.Text = value, wenn bzw. da du einen String übergibst, aber in der ComboBox (wohl) andere Objekte als String stehen.

herbivore

F
FeelFlow Themenstarter:in
67 Beiträge seit 2010
vor 13 Jahren

Jupp! Die Combo wurde so vollgehauen.

Aber mit ~.Text funktionierts! Danke!