Laden...

Ändern von Eigenschaften von z.B. TextBox

Erstellt von iberendes vor 19 Jahren Letzter Beitrag vor 19 Jahren 1.948 Views
I
iberendes Themenstarter:in
50 Beiträge seit 2004
vor 19 Jahren
Ändern von Eigenschaften von z.B. TextBox

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!

D
279 Beiträge seit 2004
vor 19 Jahren

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

I
iberendes Themenstarter:in
50 Beiträge seit 2004
vor 19 Jahren

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?

D
279 Beiträge seit 2004
vor 19 Jahren

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 😃

I
iberendes Themenstarter:in
50 Beiträge seit 2004
vor 19 Jahren

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.

D
279 Beiträge seit 2004
vor 19 Jahren

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.

I
iberendes Themenstarter:in
50 Beiträge seit 2004
vor 19 Jahren

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?

1.549 Beiträge seit 2004
vor 19 Jahren

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

I
iberendes Themenstarter:in
50 Beiträge seit 2004
vor 19 Jahren

Das ist mir jetzt klar, nur wie bekomme ich das hin,
wie in meinem letzten Beitrag geschrieben?

D
279 Beiträge seit 2004
vor 19 Jahren

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

I
iberendes Themenstarter:in
50 Beiträge seit 2004
vor 19 Jahren

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.