Ich möchte, wie die Überschrift schon sagt, Eigenschaften von einzelnen Objekten im laufenden Programm verändern.
Ich hab mir das so gedacht, aber der Compiler mag es wohl nicht,
zumindest spuckt er immer diese Fehlermeldung aus:
Keyword is not a valid static property, .....
static void Main(string[] arg)
{
Stufenprogramm frm = new Stufenprogramm();
Chat.chatfenster chat = new Chat.chatfenster();
chat.Show();
chat.Chatfenster();
if (arg[0] == "admin") {
this.console.Visible = true;
this.consolebutton.Visible = true;
this.axWebBrowser.Size = new System.Drawing.Size(this.axWebBrowser.Size.Width, 808);
}
Application.Run(frm);
}
Die Fehlermeldung oben bezieht sich auf die drei Anweisungen in der if-Bedingung.
Ohne "this" kommt folgende Fehlermeldung:
'Haupt.class.console' donates a 'field' where a 'class' was expected
Ich bin noch ziemlicher Anfänger auf diesem Gebiet.
Für jemanden, der sich schon länger mit dieser Sprache beschäftigt,
wir das wohl sehr einfach zu lösen sein.
Vielen Dank für eure Hilfe schon mal im Voraus!
Mit this sprichst du die Klasse selber an. Das heißt du kannst auf statischen (static) Elemente der Klasse zugreifen.
Da du aber eine Instanz der Klasse (frm) benutzt, muss deine if-Anweisung wiefolgt aussehen:
if (arg[0] == "admin")
{
frm.console.Visible = true;
frm.consolebutton.Visible = true;
frm.axWebBrowser.Size = new System.Drawing.Size(this.axWebBrowser.Size.Width, 808);
}
Erstmal herzlichen Dank für die schnelle Antwort.
Ein Problem hätte ich trotzdem noch:
Wenn ich jetzt das Programm starte, stürzt es sofort wieder ab.
Als Fehlermeldung kommt:
Das Programm traf auf eine unbehandelte Exception-Klasse.
Kann das vielleicht daran liegen, dass, wenn ich "frm" und dann den "." eingebe,
sich zwar das Menü mit den möglichen Befehlen, Methoden etc. öffnet, aber ohne die Elemente aus meinem Form?
Ohne welche Elemente aus deinem Form?
Wenn die Objekte nicht zu Form gehören würden, dann würde der Compilr ja beim zuweisen der Eigenschaften schon einen Fehler ausgeben.
Zeig doch mal den Code 😃
Der Fehler ist ein ganz anderer, habe ich jetzt gemerkt.
Und zwar tritt der Fehler nur dann auf, wenn ich keinen Parameter zum Starten angebe.
Der komplette Code von meinem Programm ist zu lang, um ihn hier zu posten.
Der Code von Main() sollte doch eigentlich reichen, oder?
static void Main(string[] @arg)
{
Stufenprogramm frm = new Stufenprogramm();
Chat.chatfenster chat = new Chat.chatfenster();
chat.Show();
chat.Chatfenster();
if (@arg[0] == "admin") {
frm.console.Visible = true;
frm.consolebutton.Visible = true;
frm.axWebBrowser.Size = new System.Drawing.Size(frm.axWebBrowser.Size.Width, 808);
}
Application.Run(frm);
}
Als Message spuckt der Debugger das aus:
Der Index war außerhalb des Array-Bereichs.
Was genau willst du denn mit dem
if (@arg[0] == "admin")
erreichen?
Der unterschied zwischen
static void Main(string[] @arg)
und
static void Main()
ist, dass ersteres Parameter beim Aufruf entgegennimmt. Beispielsweise:
deinprog.exe -param1 -param2
Diese werden dann in dem Array gespeichert. Wenn du keine Parameter übergibst, dann ist args[0] leer, was zu dem besagten Fehler führt.
Ich will damit erreichen, dass nur, wenn dieser Parameter eingegeben ist,
die Felder (TextBox und Bottun) zu sehen sind.
Wenn kein Parameter eingegeben ist, sollen die eben nicht zu sehen sein.
Gibt es da eine Möglichkeit das irgendwie so zum Laufen zu bringen?
Es ist so die Parameter die du beim start übergibt sind im Array arg gespeichert wenn du dann aber keine Parameter übergibst ist das Array leer und du kanst nicht darauf zugreifen.
Wir Arbeiten eigendlich nicht wir nehmen nur das geld
Das ist mir jetzt klar, nur wie bekomme ich das hin,
wie in meinem letzten Beitrag geschrieben?
Wie wärs wenn du noch eine if-Anweisung drumrum machst:
if(@arg.Length > 0)
{
if (@arg[0] == "admin")
{
frm.console.Visible = true;
frm.consolebutton.Visible = true;
frm.axWebBrowser.Size = new System.Drawing.Size(frm.axWebBrowser.Size.Width, 808);
}
}
Gute Idee, irgendwie sowas habe ich auch gesucht.
Nur ich wusste nicht, wie ich das machen sollte.
In PHP hätte ich jetzt den Befehl isset verwendet.
Nochmals danke für deine gute, schnelle und ausführliche Hilfe.