Autor Beitrag
Ccenter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Mi 21.07.10 19:14 
Hallo,
ich habe gerade ein Problem und zwar möchte ich auf eine listBox1 zugreifen.
Das gelingt mir aber nicht innerhalb einer selbst geschriebenen Methode.

Beispiel:
ausblenden C#-Quelltext
1:
2:
3:
4:
public static void test()
{
      listBox1.items.add("test");
}


Fehlermeldung:
Für das nicht statische Feld, die Methode oder die Eigenschaft ist ein Objektverweis erforderlich.

Wie füge ich denn jetzt den Objektverweis hinzu?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 21.07.10 19:23 
Du hast die Methode als static deklariert. Die Listbox ist ja aber ein nicht-statisches Feld der Form. Also einfach die Methode nicht statisch deklarieren und schon sollte das passen :-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ccenter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Mi 21.07.10 20:05 
Ok vielen dank =)
Ccenter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Do 29.07.10 18:00 
Ok, jetzt bin ich leider auf das static angewiesen.
Ich habe nun versucht das Problem so zu lösen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void Form1_Load(object sender, EventArgs e)
{
    testMethode();
}
public static void testMethode()
{
    Form1 frm = new Form1();
    frm.textBox1.Text = "test";
}


Ich bekomme keine Fehlermeldung aber leider passiert auch sonst nichts.
Fehlt da noch irgendwas oder ist das der falsche Weg?
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 29.07.10 18:15 
Wieso bist Du auf static angewiesen?

Was Du da machst, kann auch nicht funktionieren. Du erstellst ja eine neue Instanz der Form und änderst an der etwas. An der ersten Instanz der Form tut das gar nichts.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Ccenter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 154

Win7
C#
BeitragVerfasst: Do 29.07.10 18:40 
Ok.
Ich verwende gerade die ManagedWinapi und hab dort einen EventHandler für einen bestimmten Hotkey eingerichtet.
Und die daraus entstandene Methode setzt static voraus.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 29.07.10 18:41 
Kannst Du das mal zeigen? Ich habe die ManagedWinApi auch schon benutzt, aber dass ich da mit statischen Methoden arbeiten musste, daran kann ich mich nicht erinnern :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 29.07.10 18:49 
Falls es tatsächlich mal nötig sein sollte, aus einer statischen Methode auf die Instanz des Hauptformulars zugreifen, kann man sich mit einem kleinen Trick behelfen. Er ist aber nicht unbedingt schön, weil er fehlschlägt, sobald mehrere Instanzen des Formulars erstellt werden müssen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
class MyForm : Form {
  private static MyForm instance;

  public MyForm() {
    /* ... */
    instance = this;
  }

  public MyForm Instance { get { return instance; } }
}

Probier aber vorher lieber aus, ob es nicht doch irgendwie mit einer nichtstatischen Methode geht.