Laden...

Referenz von Form1 an Klasse übergeben.

Erstellt von signC vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.219 Views
Thema geschlossen
S
signC Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren
Referenz von Form1 an Klasse übergeben.

Hallo,

bin neu in c# und hab Schwierigkeiten eine Referenz von Form1 an eine Klasse zu übergeben. Ich hab schon einiges auspropiert, bin aber nicht zum Ziel gekommen.


namespace test {

    public class ListViewC : Form {

        public void setListview(Form1 frm1) {

            frm1.listView1.Clear(); // fehler
            frm1.listView1.View = View.Details; // fehler
 
        }
    }
}

Leider bekomm ich eine Fehlermeldung:> Fehlermeldung:

Der Zugriff auf "test.Form1.listView1" ist aufgrund der Sicherheitsebebe nicht möglich.

Danke für eure Hilfe.
lg

C
51 Beiträge seit 2010
vor 12 Jahren

Das liegt daran, dass Dein ListView in der Form1 den Zugriffsmodifizierer "Private" hat.
Daher kannst du nur innerhalb der Klasse Form1 auf das ListView Objekt zugreifen.

S
signC Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Habs in Form1.Designer.cs umgestellt.
Danke.

S
269 Beiträge seit 2010
vor 12 Jahren

2 Möglichkeiten zur Abhilfe, anhand der von caldicot schon genannten Information:

  1. Den Zugriffsmodifizierer auf Public schalten. Dies geht über die "Modifiers"-Einstellung (Entwurfsansicht)
  2. In deiner Form eine Public Method erstellen, die da zum Beispiel "ClearListView1()" heißen könnte.

Mir persönlich gefällt Lösung 2 besser 😉

so far
Karill

L
416 Beiträge seit 2008
vor 12 Jahren

Mir persönlich gefällt Lösung 2 besser 😉

Es ist aber keine von beiden "Lösungswegen" zu empfehlen. Wie es richtig geht siehe [FAQ] Kommunikation von 2 Forms

S
signC Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Da geht es aber um zwei Formen, ich hab eine Form und eine Kasse??

S
269 Beiträge seit 2010
vor 12 Jahren

Dann leite deine Klasse doch bitte nicht von Form ab, denn dadurch ist der Eindruck entstanden, es handele sich bei deiner Klasse um eine Form 😉

L
416 Beiträge seit 2008
vor 12 Jahren

Davon abgesehn ist eine Form nichts anderes als eine Klasse.
Der ganze Thread fällt aber eigentlich schon von Anfang an unter [Hinweis] Wie poste ich richtig? 1.1.1

S
signC Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Was willst du mir damit sagen? Ich bin c# Anfänger und hab hier nichts zu suchen??

L
416 Beiträge seit 2008
vor 12 Jahren

Was willst du mir damit sagen? Ich bin c# Anfänger und hab hier nichts zu suchen??

Bitte den Thread lesen, darin wird auch diese Frage geklärt.

S
signC Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Welchen Thread??

B
193 Beiträge seit 2009
vor 12 Jahren

Nein, dass heißt das du mit etwas Initiative ohne große Probleme selbst darauf gekommen wärst, siehe 1.1 Erst suchen und in die Doku schauen, dann posten b.z.w 1.1.1 Nicht nach Grundlagen fragen

S
signC Themenstarter:in
12 Beiträge seit 2011
vor 12 Jahren

Das tat ich, hab aber leider nichts gefunden was gepasst hat. Deshalb mein Post. Und so wie es aussieht hab ich nun drei Lösungen bekommen, von denen behauptet wird das jeweils die eine die Richtige/Bessere ist. So klar scheit die Antwort also nicht zu sein.

6.911 Beiträge seit 2009
vor 12 Jahren

Hallo signC,

So klar scheit die Antwort also nicht zu sein.

Doch die Antwort ist klar - und im verlinkten FAQ-Thema (Themen werden in Foren auch Threads genannt) beantwortet.

Ein Setzten auf public ist aus Gründen der Kapselung (ein OOP-Prinzip) nicht zu empfehlen, da eben die Kapselung dadurch verletzt wird. Wie es aber korrekt geht entnimm bitte der FAQ. Bedenke dabei, dass ein Form auch nur eine Klasse ist.

Wie jedoch bereits mehrfach erwähnt wurde sind das Grundlagen und schon öfters gefragt worden (daher auch eine FAQ - frequently asked question). Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1, 1.1.1.

Was willst du mir damit sagen? Ich bin c# Anfänger und hab hier nichts zu suchen??

Diese Frage wurde in diesem Thread auch schon geklärt, aber schau dir hier auch Nehmt ihr auch Neulinge in der gehobenen Programmier-Welt auf? an.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Thema geschlossen