Morgen,
ich habe da mal ein Problem und auf der suche nach der lösung bin ich hier auf das Forum gestossen. Ja ich habe mir auch die Benutzeregeln durchgelsen und ich weiss auch das diese Forum kein anfänger forum ist aber ich Poste dennnoch mein problem.
public class Form1 : System.Windows.Forms.Form
{
string Pfad;
public static void Main(string[] args)
{
Pfad = args[11];
Application.Run(new Form1());
}
private void btn_Save_Click(object sender, System.EventArgs e)
{
......
if (IO.writeDataToDisk(al_SQLData, Pfad + NameLine + ".sql") == false)
......
}
}
Jetzt bekomme ich immer die meldung. Ein Objektverweis ist für das nicht statische Feld, Methode oder Eigenschaft von "Save.Form1.Pfad" erforderlich.
Naja da ich grade erst mit dem programmieren angefangen habe sagt mir das net viel. Wo liegt der fehler oder was heisst das ?
MFG
Kleiner Progger
Hallo Kleiner Progger,
und willkommen hier im Forum.
Der obligatorische Hinweis: [Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)
Ein Objektverweis ist für das nicht statische Feld, Methode oder Eigenschaft von "Save.Form1.Pfad" erforderlich. Sagt eigentlich alles aus!
Du kannst nicht aus einer statischen Methode auf eine Membervaiable eines Objektes zugreifen.
Grüße
él toro
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
Du kannst nicht aus einer statischen Methode auf eine Membervaiable eines Objektes zugreifen.
Aber kann man das net umgehn denn ich brauch den wert aus args[11] ?! omg nicht beachten lese grade den link
Denn das komische ist wenn ich mit dem Debugger bis zum haltepunkt laufe ist Pfad = H:\ und oh wunder args[11] = H:\
naja danach springt er zum string Pfad. Da ist dann Pfad = null.
Aber die daten werden trotzdem in H:\ gespeichert !
naja danach springt er zum string Pfad
Zeig uns doch nochmal deinen "aktuellen" Code, wir können schließlich nicht hellsehen...
Pfad = args[11];
Application.Run(new Form1());
Da liegt dein Problem.. Du legt "PFad" den wert von args[11] zu.. soweit so gut.. Nachher rufst du die Anwendung auf, u.a. mit "new Form1()", also machst du ein neues Objekt. hierbei wird wohl auch Pfad neu definiert, und nachdem du "string Pfad;" hast, ist bzw. bleibt dieser null.
lg
lg Lion
aber wie kann ich es schaffen das Pfad nicht neu definiert wird X(
habe das mal so veruscht aber das geht irgentwie auch net X(
public class Form1 : System.Windows.Forms.Form
{
string Test;
public static void Main(string[] args)
{
Form1 nc = new Form1();
nc.Pfad = args[11];
Application.Run(new Form1()); <-- hier müsste dann Form1 nc geladen werden
}
private void btn_Save_Click(object sender, System.EventArgs e)
{
....
if (IO.writeDataToDisk(al_SQLData, Pfad + NameLine + ".sql") == false)
....
}
}
so bekomme ich es hinn das in Form nc Pfad.nc = args[11] ist aber wie gesagt muss man bei Application.Run das ändern nur Form1 nc nimmt der net an
Application.Run(new Form1()); <-- hier müsste dann Form1 nc geladen werden
Wenn du nc "laden" willst, warum übergibst du es dann nicht und machst stattdessen eine völlig neues (new!) Form auf? Da kannst du in nc speichern was du willst, du verwendest es doch gar nicht...
Wenn du nc "laden" willst, warum übergibst du es dann nicht und machst stattdessen eine völlig neues (new!) Form auf?
Genau da ist ja mein problem. Ich weiss ja net wie ich das machen soll.
Wenn ichs wüsste würde ichs ja machen 😉
Sorry.. schreib doch das "doofe" Objekt hin was du verwenden willst, dass ist ja nun wirklich nicht schwer 🙂 (ansonsten => 🛈 )
lg
lg Lion