Hallo Gemeinde,
in einer älteren WinForm-Anwendung, in C# geschrieben, wird leider noch sehr viel mit dem Hauptform, also dem MainWindow gemacht. Externe Klassen sind wenig verwendet worden.
Um Async auf ein ToolStripStatusLabel zugreifen zu können, der Text soll geändert werden können, verwende ich folgenden Code:
frmMain
In der selben Klasse wird über ein Ereignis eine Funktion als Task, als Nebenläufig, aufgerufen und hier wird der Label wie folgt angepasst:
Nun möchte ich bestimmte Vorgänge in seperate Klassen unterbringen, also nicht in der
Zunächst habe ich die Zeile geändert in:
Ein Fehler im Abschnitt
Verstanden, aber ich dachte mir, dann mach das Feld doch statisch und gut:
So jetzt ist aber der Fehler ganz nach vorne gerückt und lautet: CS0120:
Hier bin ich raus, ich schnalle die Syntax einfach nicht, bei einer Form wäre es
aber hier weiß ich nicht weiter.
Kann mir jemand freundlicherweise erklären, was ich machen muss um das
Merci
in einer älteren WinForm-Anwendung, in C# geschrieben, wird leider noch sehr viel mit dem Hauptform, also dem MainWindow gemacht. Externe Klassen sind wenig verwendet worden.
Um Async auf ein ToolStripStatusLabel zugreifen zu können, der Text soll geändert werden können, verwende ich folgenden Code:
C#-Quellcode
- internal delegate void SetStatusTextDelegate(string value, bool wait);
- internal SetStatusTextDelegate SetStatusText;
- private void SetStatusTextMethod(string value, bool wait)
- {
- if (wait)
- Cursor.Current = Cursors.WaitCursor;
- else
- Cursor.Current = Cursors.Default;
- tsStatusLabel.InvokeIfRequiredToolstrip(o =>
- {
- o.Text = value;
- });
- }
In der selben Klasse wird über ein Ereignis eine Funktion als Task, als Nebenläufig, aufgerufen und hier wird der Label wie folgt angepasst:
Nun möchte ich bestimmte Vorgänge in seperate Klassen unterbringen, also nicht in der
public partial class frmMain
-Klasse. Die Fehlermeldungen sind banal, die Lösung ist aber nicht offensichtlich.Zunächst habe ich die Zeile geändert in:
Ein Fehler im Abschnitt
frmKonverter.SetStatusText
ist offensichtlich: CS0120: Für das nicht statische Feld, die Methode oder die Eigenschaft "frmMain.SetStatusText" ist ein Objektverweis erforderlich.
Verstanden, aber ich dachte mir, dann mach das Feld doch statisch und gut:
So jetzt ist aber der Fehler ganz nach vorne gerückt und lautet: CS0120:
CS0120: Für das nicht statische Feld, die Methode oder die Eigenschaft "Control.Invoke(Delegate, params object[])" ist ein Objektverweis erforderlich.
Hier bin ich raus, ich schnalle die Syntax einfach nicht, bei einer Form wäre es
aber hier weiß ich nicht weiter.
Kann mir jemand freundlicherweise erklären, was ich machen muss um das
Invoke
zum Laufen zu bringen?Merci