Laden...

C#: aus statischer Methode auf Objekt zugreifen

Erstellt von Nezgrul vor 14 Jahren Letzter Beitrag vor 14 Jahren 7.427 Views
N
Nezgrul Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren
C#: aus statischer Methode auf Objekt zugreifen

Hallo,
ich suche schon seit heute morgen um 10.00, habe aber nicht das gefunden, was genau mein Problem löst.

Das hier ist mein Code:


public partial class Form1 : Form
{


       public static void lbltxtchange()
      {

          Form1 lblchange = new Form1();
          lblchange.label1.Text = "Gurke";

      }

      private void btnchange_Click(object sender, EventArgs e)
      {

          lbltxtchange();
      }

} 

Mein Problem: Um den Text des Labels (label1) aus einer statischen Methode heraus zu verändern, brauche ich ja einen Objektverweis. Mit diesem Code erstelle ich aber ein zweites "Form1".
Könntet ihr mir helfen, wie ich anstatt ein neues Form zu erstellen, auf das Label auf Form1 zugreifen kann?

Danke schonmal,
Nezgrul

5.742 Beiträge seit 2007
vor 14 Jahren
N
Nezgrul Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren

Hiho,
das habe ich mir schon durchgelesen, daher habe ich ja den Code.


      MyClass anInstanceofMyClass = new MyClass();
      anInstanceofMyClass.TestCall();

5.742 Beiträge seit 2007
vor 14 Jahren

Mach die Methode einfach nicht statisch und gut ist.

N
Nezgrul Themenstarter:in
5 Beiträge seit 2010
vor 14 Jahren

Mach die Methode einfach nicht statisch und gut ist.

Also gibt es keine Möglichkeit einen Verweis auf ein bereits vorhandenes Objekt zu "legen"? Muss man immer ein neues Objekt erstellen?

T
94 Beiträge seit 2007
vor 14 Jahren

Dir fehlen noch einige Grundlagen, die du dir erst mal aneignen solltest. Damit dein Code funktioniert, ist folgendes zu tun.


public void lbltxtchange()
{
  lblchange.label1.Text = "Gurke";
}

5.742 Beiträge seit 2007
vor 14 Jahren

Also gibt es keine Möglichkeit einen Verweis auf ein bereits vorhandenes Objekt zu "legen"?

Doch - das nennt sich Variable.
Allerdings bezweifle ich, dass dir das jetzt wirklich weiterhelfen wird - eine statische Methode ist hier einfach fehl am Platze!

456 Beiträge seit 2007
vor 14 Jahren

Mach die Methode einfach nicht statisch und gut ist.

Also gibt es keine Möglichkeit einen Verweis auf ein bereits vorhandenes Objekt zu "legen"? Muss man immer ein neues Objekt erstellen?

suchst Du vielleicht sowas?



private static void ChangeText(Form form, String labelName) {
  // Who cares about Nullpointers?
  ((Label)form.Controls.Find(labelName, true)[0]).Text = "Gurke";
}

private void cmdChange_Click(object sender, EventArgs e) {
  ChangeText(this, lbtText.Name);
}

3.170 Beiträge seit 2006
vor 14 Jahren

Hallo,

es hat im Allgemeinen nicht viel Sinn, wenn eine statische Methode eine Instanz der Klasse benötigt, in der sie deklariert wird -> dann kann man auch eine Memberfunktion nehmen.
Der einzige Anwendungsfall, bei dem ich mir das vorstellen könnte, wäre der, daß die statische Methode auch dann Ihre Arbeit tun kann, wenn ein solcher Parameter null ist.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

456 Beiträge seit 2007
vor 14 Jahren

@MarsStein,

das ja nur ein Beispiel - natürlich wäre eine solche Methode public (oder ggf. protected) und auch das Errorhandling sollte dann implementiert sein.

Ich habe das Codesnippet nur quick & dirty reingestellt - hab ja keine Ahnung, warum der Threadersteller diese Funktionalität benötigt.

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Nezgrul,

Also gibt es keine Möglichkeit einen Verweis auf ein bereits vorhandenes Objekt zu "legen"?

natürlich gibt es immer viele andere Möglichkeiten, aber nicht alles was geht, ist auch sinnvoll. Den richtigen Rat hat winSharp93 gegeben:

Mach die Methode einfach nicht statisch und gut ist.

Muss man immer ein neues Objekt erstellen?

Nein, das musst man natürlich nicht und das wäre in aller Regel sogar der falsche Weg.

Leider fallen alle deine Fragen und Nachfragen unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore