Autor Beitrag
DeadlyAppearance
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 113

Win 7
Delphi 2010 Arch., C# VS 2008
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 113

Win 7
Delphi 2010 Arch., C# VS 2008
BeitragVerfasst: So 27.12.09 00:57 
user profile iconFlitzs hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: 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.

ausblenden C#-Quelltext
1:
2:
Form1 myform = new Form1();
//myform.listView1


Überlicherweise legt VS einen Objektverweis in der Program.cs Datei automatisch an.

mfg Flitzs
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 27.12.09 01:08 
user profile iconFlitzs hat folgendes geschrieben Zum zitierten Posting springen:
Ü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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: 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.

ausblenden 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; }

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            myForm1 = new Form1();

            Application.Run(myForm1);
        }
    }


ausblenden 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()
        {
            //Program.myForm1.listView1
        }
    }


mfg Flitzs
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 27.12.09 01:18 
user profile iconFlitzs hat folgendes geschrieben Zum zitierten Posting springen:
this wird er in einer statischen Methode nicht benützen können.
Dieser Gedanke wurde prompt von meinem darauffolgenden Satz aufgenommen und als Lösungsvorschlag formuliert ;) .

user profile iconFlitzs hat folgendes geschrieben Zum zitierten Posting springen:
Er muss einfach in der Program Klass eine public/internal statische Eigenschaft definieren, welche die aktuelle Instanz der Form1 zurückgibt.
Uff. Statische Variablen müssen nicht unbedingt für schlechtes Design stehen... aber in diesem Fall, wo doch nur ein kleines Wörtchen entfernt werden müsste, definitiv!

_________________
>λ=
Flitzs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 123
Erhaltene Danke: 7

Win7 x64/86 WinServer 2008 R2 x64
C#/C++/C VS2010
BeitragVerfasst: So 27.12.09 01:21 
Hey,

ähm ich versteh ich ganz was du nun meinst, hilf mir bitte kurz :)
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
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
BeitragVerfasst: 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:
user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
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:
user profile iconFlitzs hat folgendes geschrieben Zum zitierten Posting springen:
ä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.