Autor Beitrag
Felix2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Do 25.08.11 15:25 
Hi Folks !

Ich möchte mal etwas von euch wissen. Ich habe jetzt eine Benutzeroberfläche mit einige Steuerelementen erstellt und will nun von einer anderen Klasse darauf zugreifen und sie dort zur Entwicklungszeit ansprechen. Die Benutzeroberfläche bzw. das Formular habe ich im Konstruktr der separarten Klasse ergeben und der Compiler gibt keinen Fehler aus.

Ich kann allerdings nicht auf mein dort vorhandenen Elemente zugreifen, sie werden mittels Punktoperator nicht gefunden. Wie kann ich erreichen, dass sie in der anderen Klasse gefunden werden?

Greetz
Felix
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Do 25.08.11 15:34 
Um die Daten nach außen hin zugreifbar zu machen, musst du eine public Property erstellen die dir den Wert zurückgibt. (Man kann auch die Variable public deklarieren aber das sollte man tunlichst vermeiden, da rollt sonst so mancher azubi-kopf :D)

Allerdings solltest du dir überlegen ob es wirklich sinnvoll ein ganzes Formular in eine Funktionalitätsklasse zu geben.
Wäre es nicht besser nur die Objekte/Werte die du brauchst zu übergeben?
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Fr 26.08.11 09:11 
Hi Folks !

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Um die Daten nach außen hin zugreifbar zu machen, musst du eine public Property erstellen die dir den Wert zurückgibt. (Man kann auch die Variable public deklarieren aber das sollte man tunlichst vermeiden, da rollt sonst so mancher azubi-kopf :D)


ja aber anders scheint es ja nicht zu funktionieren oder? Wenn die Variablen nicht public sind, dann kann ich sie auch nicht in einer anderen Klasse sehen (egal, ob ich nun öffentliche Getter und Setter Methoden setze ).

Zitat:

Allerdings solltest du dir überlegen ob es wirklich sinnvoll ein ganzes Formular in eine Funktionalitätsklasse zu geben.
Wäre es nicht besser nur die Objekte/Werte die du brauchst zu übergeben?


Nein, es würde keinen Sinn machen, nur die einzelnen Objekte auf der Form zu übergeben, anstatt das gesamte Formular. Das wäre ein viel zu großer Aufwand und außerdem wüsste ich auch nciht, was daran falsch sein sollte, eine gesamte Form einem Konstruktor einer anderen Klasse zu übergeben?

Greetz
Felix
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 26.08.11 09:29 
user profile iconFelix2000 hat folgendes geschrieben Zum zitierten Posting springen:
ja aber anders scheint es ja nicht zu funktionieren oder?

Doch mit einer entsprechenden Property. private Variable und public Property

user profile iconFelix2000 hat folgendes geschrieben Zum zitierten Posting springen:
und außerdem wüsste ich auch nciht, was daran falsch sein sollte, eine gesamte Form einem Konstruktor einer anderen Klasse zu übergeben?

Ganz einfach:
Anzeige- und Arbeitsebene sollten immer getrennt werden.
Nehmen wir mal an du willst deine Klasse da auch woanders verwenden wo aber nur eine Console zur Verfügung steht oder andere Designanforderungen stehen. Dadurch das der Kontruktor an die Übergabe dieses Forms gebunden ist würde das nicht funktionieren.
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Fr 26.08.11 09:53 
Hi Folks !

Zitat:
Doch mit einer entsprechenden Property. private Variable und public Property


Genau das habe ich mal im Designer des entsprechenden Formulars versucht und anschließend konnte ich das Formular nicht mehr in der Entwurfsansicht verändern, außerdem wurde keines der Objekte im Formular in der separaten Klasse erkannt.

Zitat:

Ganz einfach:
Anzeige- und Arbeitsebene sollten immer getrennt werden.
Nehmen wir mal an du willst deine Klasse da auch woanders verwenden wo aber nur eine Console zur Verfügung steht oder andere Designanforderungen stehen. Dadurch das der Kontruktor an die Übergabe dieses Forms gebunden ist würde das nicht funktionieren.


Ok, dass würde wirklich Sinn machen, aber bei mir sind die Anforderungen für die Software ziemlich eindeutig und mit Konsolen-Anwendungen werde ich auch zukünftig nichts am Hut haben.

Greetz
Felix
dark-destination1988
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 178
Erhaltene Danke: 21



BeitragVerfasst: Fr 26.08.11 10:01 
du darfst das nicht in dem designer formular ändern, sondern in der form1.cs datei. Da kannst du beliebige properties anlegen und von aussen drauf zugreifen!
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 26.08.11 10:02 
Vielleicht solltest du dich erstmal belesen was eine Property ist. Die erstellt man nicht im Designer...

Und nur weil bei deinem kleinen Projekt die Anforderungen relativ niedrig sind heisst das nicht das man nicht sauber entwickeln sollte.

Deinen Grundlagefragen nach nehme ich an du bist entweder Azubi oder zumindest neu bei C# und grade in der Lernphase sollte man sich anstrengen möglichst sauber zu programmieren, sonst wird es nie besser.


Zuletzt bearbeitet von bakachan am Fr 26.08.11 12:00, insgesamt 1-mal bearbeitet
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Fr 26.08.11 10:24 
Hi Folks !

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht solltest du dich erstmal belesen was eine Property ist. Die erstellt man nicht im Designer...


Vollkommen richtig, die erstellt mir auch der Designer und nicht ich ;-)


Zitat:
Und nur weil bei deinem kleinen Projekt die Anforderungen relativ niedrig sind heisst das nicht das man nicht sauber entwickeln sollte.


Da hast du definitiv recht.


Zitat:
Deinen Grundlagefragen nach nehme ich an du bist entweder Azubi oder zumindest neu bei C# und grade in der Lernphase sollte man sich anstrengen möglichst sauber zu programmieren, sonst wird es nie besser.


Du solltest bei der Wahl deiner Formulierung gut überlegen, wie diese bei deinen Mitmenschen ankommen könnte (egal, ob nun virtuell oder im realen Leben). Wenn ich deine Wortwahl als Ausstehender lesen würde, bekäme ich den Eindruck, du seist ein Aufschneider.

Greetz
Felix
bakachan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 503
Erhaltene Danke: 34

W7 (x64) Ultimate
C# / VB.NET (VS2010 Ultimate)
BeitragVerfasst: Fr 26.08.11 11:01 
user profile iconFelix2000 hat folgendes geschrieben Zum zitierten Posting springen:
Hi Folks !

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Vielleicht solltest du dich erstmal belesen was eine Property ist. Die erstellt man nicht im Designer...


Vollkommen richtig, die erstellt mir auch der Designer und nicht ich ;-)

Aber doch nicht wenn du selbst etwas nach außen geben willst. Nehmen wir einfach mal an du hast irgendwo auf deinem Formular eine TextBox (nennen wir sie einfach mal "myTextBox") und du möchtest den Text dieser TextBox von außen auslesen. Dann brauchst du bei deinem Formular eine Property die in etwa so aussieht:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
public string MyTextBoxValue{
  get{
    return myTextBox.Text;
  }
}


user profile iconFelix2000 hat folgendes geschrieben Zum zitierten Posting springen:

Du solltest bei der Wahl deiner Formulierung gut überlegen, wie diese bei deinen Mitmenschen ankommen könnte (egal, ob nun virtuell oder im realen Leben). Wenn ich deine Wortwahl als Ausstehender lesen würde, bekäme ich den Eindruck, du seist ein Aufschneider.

Das zu beurteilen bleibt jedem selbst überlassen.
Zumindest sehe ich in meinem Beitrag keine unpassende Formulierung.

Sollten dir meine Aussagen dennoch zu unpassend sein habe ich auch kein Problem damit mich aus deinen Themen fernzuhalten. (sag einfach bescheid wenn es so ist)
Felix2000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 124



BeitragVerfasst: Fr 26.08.11 11:41 
Hi Folks !

user profile iconbakachan hat folgendes geschrieben Zum zitierten Posting springen:
Das zu beurteilen bleibt jedem selbst überlassen.
Zumindest sehe ich in meinem Beitrag keine unpassende Formulierung.

Sollten dir meine Aussagen dennoch zu unpassend sein habe ich auch kein Problem damit mich aus deinen Themen fernzuhalten. (sag einfach bescheid wenn es so ist)


Dazu nochmal eine kurze Anmerkung, dann sollte es auch gut sein. Du gebrauchst das Wort "Azubi" in deinem Kontext abqualifizierend und jeder, der Azubi ist oder eine Lehre anfangen will und diese Worte liest, fühlt sich sicherlich ein Stück weit diskreditiert und herabgesetzt. Das muss doch nicht sein oder? Schreib doch einfach Anfänger oder Neuling, somit greifst Du niemanden indirekt an.

Du kannst dich gerne weiterhin zu meinen Themen äußern, aber dann doch bitte ohne solche Abqualifizierungen ok? Bedenke bitte, dass jeder mal ganz klein angefangen hat und man sich auf unterschiedlichen Niveaustufen in Punkto Programmierung bewegt.

Greetz
Felix