Servus,
ich (Neuling) hoffe ich habe das richtige Forum gefunden, denke zumindest das es Grundlagen sind woran ich gerade scheiter ^^
Also ich habe vor eine Funktion oder Methode wie sie hier wohl genannt wird in eine andere Datei auszulagern so das der Code nicht zu viel wird in der "Hauptdatei"
Also habe ich eine Klasse hinzugefügt
Projekt --> Klasse hinzufügen --> Klasse und auf hinzufügen geklickt
Habe die Datei umbenannt in RepeaterLaden.cs
dort ist dann das hier drin:
C#-Code: |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Delta_Oskar_One
{
class RepeaterLaden
{
}
}
|
Jetzt habe ich meine Funktion:
C#-Code: |
private void RepeaterListeLaden(int laden)
{
if (laden == 1)
{
WebClient webClient = new WebClient();
webClient.DownloadFile("http:
}
comboBox1.Items.Clear();
try {
string[] lineOfContents = System.IO.File.ReadAllLines("RepeaterListe.txt");
foreach (var line in lineOfContents)
{
string v = line.Replace("<BR />", "");
string[] tokens = v.Split(',');
int intValue;
Int32.TryParse(tokens[0].Trim(), out intValue);
if (intValue >= 262000 && intValue <= 263000)
{
comboBox1.Items.Add(tokens[1] + " - " + tokens[0]);
}
}
if (laden == 1) MessageBox.Show("Repeater Liste wurde aktualisiert.");
}
catch
{
RepeaterListeLaden(1);
}
}
|
in die Ausgelagerte Datei verschoben was dann so aussieht:
C#-Code: |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Delta_Oskar_One
{
class RepeaterLaden
{
private void RepeaterListeLaden(int laden)
{
if (laden == 1)
{
WebClient webClient = new WebClient();
webClient.DownloadFile("http:
}
comboBox1.Items.Clear();
try
{
string[] lineOfContents = System.IO.File.ReadAllLines("RepeaterListe.txt");
foreach (var line in lineOfContents)
{
string v = line.Replace("<BR />", "");
string[] tokens = v.Split(',');
int intValue;
Int32.TryParse(tokens[0].Trim(), out intValue);
if (intValue >= 262000 && intValue <= 263000)
{
comboBox1.Items.Add(tokens[1] + " - " + tokens[0]);
}
}
if (laden == 1) MessageBox.Show("Repeater Liste wurde aktualisiert.");
}
catch
{
RepeaterListeLaden(1);
}
}
}
}
|
Im Hauptprogramm wird jetzt natürlich die
RepeaterListeLaden(0);
bemängelt da es die nicht mehr gibt, also habe ich es durch
RepeaterLaden.RepeaterListeLaden(0);
ersetzt, danach wird wieder gemeckert das der Zugriff auf Grund des Schutzgrades nicht möglich ist.
OK also habe ich in der Ausgelagerten Datei die
private void RepeaterListeLaden(int laden)
ersetzt durch
public static void RepeaterListeLaden(int laden)
also aus private ein public gemacht und das static noch eingefügt, public verstehe ich ja noch aber static nicht wirklich. Naja egal zumindest kein Fehler mehr im Hauptprogramm.
In der ausgelagerten Datei werden jetzt noch ein paar Punkte bemängelt
WebClient webClient = new WebClient();
konnte ich durch einfügen von
using System.Net;
im Header beheben
dann noch
using System.Windows.Forms;
in den Header das die
MessageBox funktioniert
So und jetzt kommt das Problem wo ich nicht weiter komme, ich kann
comboBox1.Items.Clear();
nicht ansprechen, der Ausgelagerte Code sagt
"Der Name "comboBox1" ist im aktuellen Kontext nicht vorhanden, die Fehlerbeschreibung zu CS103 die hier im Forum verlinkt ist hat mir nicht geholfen da dort was von Try erzählt wird und es nicht um ausgelagerte Funktionen geht.
So schaut der Code jetzt insgesamt aus:
C#-Code: |
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Windows.Forms;
namespace Delta_Oskar_One
{
class RepeaterLaden
{
public static void RepeaterListeLaden(int laden)
{
if (laden == 1)
{
WebClient webClient = new WebClient();
webClient.DownloadFile("http:
}
comboBox1.Items.Clear();
try
{
string[] lineOfContents = System.IO.File.ReadAllLines("RepeaterListe.txt");
foreach (var line in lineOfContents)
{
string v = line.Replace("<BR />", "");
string[] tokens = v.Split(',');
int intValue;
Int32.TryParse(tokens[0].Trim(), out intValue);
if (intValue >= 262000 && intValue <= 263000)
{
comboBox1.Items.Add(tokens[1] + " - " + tokens[0]);
}
}
if (laden == 1) MessageBox.Show("Repeater Liste wurde aktualisiert.");
}
catch
{
RepeaterListeLaden(1);
}
}
}
}
|
Ich hoffe jemand kann mir als C# ANFÄNGER helfen, ist vermutlich für euch ne Kleinigkeit und schneller zu beantworten als einen Let Me Google That For You Link zu posten ;)
Und ja ich google schon danach ;)
EDIT: ach ja ich habe auch schon das versucht
Form1.comboBox1.Items.Clear();
dann meckert das Programm wieder wegen dem Schutzgrad