Autor |
Beitrag |
DeadlyAppearance
      
Beiträge: 113
Win 7
Delphi 2010 Arch., C# VS 2008
|
Verfasst: So 27.12.09 00:46
Einen schönen guten Abend zusammen.
Und zwar bin ich noch recht neu im Umgang mit C# und stehe vor einem Problem.
Ich habe ein Windowsform mit einer Listview. Innerhalb der Funktion public Form1() kann ich problemlos auf meine listView1 zugreifen.
Nun habe ich eine eigene Funktion private static void download() erstellt, welche sich in der gleichen Form1 Klasse befindet. Jedoch habe ich hier keinen Zugriff auf meine Listview.
Woran liegt das und wie behebe ich dieses Problem?
_________________ Als du auf die Welt kamst, weintest du, und um dich herum freuten sich alle. Lebe so, daß, wenn du die Welt verläßt, alle weinen und du allein lächelst.
|
|
Flitzs
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: So 27.12.09 00:51
Da du die Methode download static deklariert hast, kanst du in ihr keine Instanzmember ohne Objektverweis ansprechen.
Du musst also entweder die Methode nicht static deklarieren, oder die ListView mit <Objektverweis>.<ListViewName> ansprechen.
mfg Flitzs
|
|
DeadlyAppearance 
      
Beiträge: 113
Win 7
Delphi 2010 Arch., C# VS 2008
|
Verfasst: So 27.12.09 00:57
Flitzs hat folgendes geschrieben : | Da du die Methode download static deklariert hast, kanst du in ihr keine Instanzmember ohne Objektverweis ansprechen.
Du musst also entweder die Methode nicht static deklarieren, oder die ListView mit <Objektverweis>.<ListViewName> ansprechen.
mfg Flitzs |
Form1.listView1
Fehler 1 Für das nicht statische Feld, die Methode oder die Eigenschaft "LogViewer.Form1.listView1" ist ein Objektverweis erforderlich.
_________________ Als du auf die Welt kamst, weintest du, und um dich herum freuten sich alle. Lebe so, daß, wenn du die Welt verläßt, alle weinen und du allein lächelst.
|
|
Flitzs
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: So 27.12.09 01:05
Die Fehlermeldung sagt doch schon, dass das kein Objektverweis ist.
Für einen Objektverweis benötigst du eine Instanz der Klasse.
C#-Quelltext 1: 2:
| Form1 myform = new Form1(); |
Überlicherweise legt VS einen Objektverweis in der Program.cs Datei automatisch an.
mfg Flitzs
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 27.12.09 01:08
Flitzs hat folgendes geschrieben : | Überlicherweise legt VS einen Objektverweis in der Programm.cs Datei automatisch an. |
Worauf er in der Form-Klasse keinen Zugriff haben dürfte, außer natürlich über this. Das Entfernen von static ist die einzige wirkliche Lösung.
_________________ >λ=
Zuletzt bearbeitet von Kha am So 27.12.09 01:15, insgesamt 1-mal bearbeitet
|
|
Flitzs
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: So 27.12.09 01:13
this wird er in einer statischen Methode nicht benützen können.
Er muss einfach in der Program Klasse eine public/internal statische Eigenschaft definieren, welche die aktuelle Instanz der Form1 zurückgibt.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| static class Program { public static Form1 myForm1 { get; private set; }
[STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false);
myForm1 = new Form1();
Application.Run(myForm1); } } |
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void Form1_Load(object sender, EventArgs e) {
} private static void download() { } } |
mfg Flitzs
|
|
Kha
      
Beiträge: 3803
Erhaltene Danke: 176
Arch Linux
Python, C, C++ (vim)
|
Verfasst: So 27.12.09 01:18
|
|
Flitzs
      
Beiträge: 123
Erhaltene Danke: 7
Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
|
Verfasst: So 27.12.09 01:21
Hey,
ähm ich versteh ich ganz was du nun meinst, hilf mir bitte kurz 
|
|
JüTho
      
Beiträge: 2021
Erhaltene Danke: 6
Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
|
Verfasst: So 27.12.09 12:03
Hallo,
dann versuche ich mal, Sebastians Gedanken anders zu begründen und zu formulieren:
Die aktuelle Instanz des Formulars soll den Download ausführen. Also muss die Download-Methode zur Instanz gehören und nicht allgemein zur Klasse. Also darf sie nicht static deklariert werden. Also:
Kha hat folgendes geschrieben : | Das Entfernen von static ist die einzige wirkliche Lösung. |
Mir fällt auch kein Grund ein, warum diese Methode als static deklariert werden könnte/sollte/müsste. Also: weg damit!
Gruß Jürgen
PS. Es ist nicht falsch, vor dem "Absenden" einen Satz per "Vorschau" zu kontrollieren:
Flitzs hat folgendes geschrieben : | ähm ich versteh ich ganz was du nun meinst, hilf mir bitte kurz  |
Ich habe das mehrmals lesen müssen, bis mir klar war, dass ein "ich" durch "nicht" ersetzt werden sollte.
|
|