Benutzer mit den meisten Antworten
Verweis innerhalb von Form1.cs

Frage
-
Hallo Leute,
ich wollte mal fragen wie ich eine Art Verweis innerhalb von Form1.cs erstellen kann.
Hier erstmal mein bisheriger Code:
private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { About zeigen = new About(); zeigen.Show(); } private void toolStripMenuItem1_Click(object sender, EventArgs e) { //string filternum = "0"; Nicht länger nötig. Wird alles über die Arrays geregelt!!! string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[0]; } private void weaponsToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] waeponospnum = {"0", "1", "2"}; string filternum = "1"; string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[1]; } private void landscapeToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] landscapeospnum = { "0", "1", "2" }; string filternum = "2"; string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[2]; } //unnötig!!! private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } //unnötig!!! private void downloadbutton1_Click(object sender, EventArgs e) { if (filternum = "1"); //und so weiter.... } } }
Das Problem ist, dass er bei der "if" Anweisung den Fehler anzeigt, dass die Variable "filternum" nicht zugewiesen wurde. Aber wie man oben sehen kann ist sie zugewiesen! Daher glaube ich, dass ich einen Verweis erstellen muss. Aber wie?
mfg
Timo
Greetings Timo
Antworten
-
Dein Code muss so aussehen:
namespace FormApp
{
class Form1
{
private string filternum = ""; private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { About zeigen = new About(); zeigen.Show(); } private void toolStripMenuItem1_Click(object sender, EventArgs e) { //string filternum = "0"; Nicht länger nötig. Wird alles über die Arrays geregelt!!! string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[0]; } private void weaponsToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] waeponospnum = {"0", "1", "2"}; filternum = "1"; string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[1]; } private void landscapeToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] landscapeospnum = { "0", "1", "2" }; filternum = "2"; string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[2]; } //unnötig!!! private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } //unnötig!!! private void downloadbutton1_Click(object sender, EventArgs e) { if (filternum = "1"); //und so weiter.... } } }Du musst die Deklaration der Variable in die Klasse verschieben. Dort kann man dann auch private usw. anwenden. Somit haben dann alle Methoden der Klasse zugriff auf die Variable.
Vergiss jetzt bitte nicht den Konstruktor und deinen restlichen Code der Klasse wieder mit einzufügen :)
Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort markiert Timo Sö Montag, 11. März 2013 17:55
Alle Antworten
-
Hey,
ich erstelle sie sehrwohl! Und zwar als normale Variable.
Schau mal in den
private void weaponsToolStripMenuItem_Click(object sender, EventArgs e)
und den
private void landscapeToolStripMenuItem_Click(object sender, EventArgs e)
Bereich. Jeweils in der dritten Zeile erstelle ich die "filternum"-Variable.
Trotzdem Danke.
Greetings Timo
- Bearbeitet Timo Sö Montag, 11. März 2013 14:23
-
Mit public void habe ich es versucht. Aber der IDE hat nmir das gleich als Fehler angekreidet. In den Formabschnitt kann ich es nicht packen, weil sich der Wert der Variable ändern soll, sobald der entsprechende Menüpart angeklickt wird.
Greetings Timo
-
Hallo, zusammen, ich versuche mal die Verwirrung etwas aufzuräumen. Eine Variable (Feld) ist immer nur in dem Block verwendbar, in dem Sie erstellt wurde. Ein Block ist der Inhalt zwishcne { und }.
Wenn du nun filternum in der Klasse erstellst, dann kannst du Sie überall verwenden:
class Form1 { public Form1()//Konstruktor { InitialisizeComponent(); } string filternum = ""; }
Filternum ist in diesem Fall privat, wenn du nun noch public oder protected davor setzt wird die variable nach außen hin zugreifbar. In deinem Fall reicht aber auch privat, da sich dein Code immer innerhalb der lasse abspielt.Nun darfst du aber die variable nicht in den Methoden neu erstellen. Heißt aus
private void landscapeToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] landscapeospnum = { "0", "1", "2" }; string filternum = "2";
wird
private void landscapeToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] landscapeospnum = { "0", "1", "2" }; filternum = "2";
Damit änderst du das Feld aus der Klassenebene. Um es besser deutlich zu machen kannst du aauch noch this. davor schreiben. this ist die aktuelle Instanz der Klasse.
Ich hoffe das hilft euch beiden ;)
Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets -
-
Dein Code muss so aussehen:
namespace FormApp
{
class Form1
{
private string filternum = ""; private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { About zeigen = new About(); zeigen.Show(); } private void toolStripMenuItem1_Click(object sender, EventArgs e) { //string filternum = "0"; Nicht länger nötig. Wird alles über die Arrays geregelt!!! string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[0]; } private void weaponsToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] waeponospnum = {"0", "1", "2"}; filternum = "1"; string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[1]; } private void landscapeToolStripMenuItem_Click(object sender, EventArgs e) { //0 = nichts; 2 = NAME DES OSPs; 3 = NAME DES OSPs; string[] landscapeospnum = { "0", "1", "2" }; filternum = "2"; string[] filtertext = { "", "Weapon OSP 1\r\n\r\nWeapon OSP 2", "Landscape OSP 1\r\n\r\nLandscape OSP 2" }; this.ospnames.Text = filtertext[2]; } //unnötig!!! private void menuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { } //unnötig!!! private void downloadbutton1_Click(object sender, EventArgs e) { if (filternum = "1"); //und so weiter.... } } }Du musst die Deklaration der Variable in die Klasse verschieben. Dort kann man dann auch private usw. anwenden. Somit haben dann alle Methoden der Klasse zugriff auf die Variable.
Vergiss jetzt bitte nicht den Konstruktor und deinen restlichen Code der Klasse wieder mit einzufügen :)
Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets- Als Antwort markiert Timo Sö Montag, 11. März 2013 17:55
-
Ah!
Vielen Dank! Jetzt verstehe ich es. Und die Variable klappt jetzt auch super.
Dafür meckert er jetzt mit meiner if-Anweisung. Er sagt:
"Eine implizierte Konvertierung vom Typ "string" in "bool" ist nicht möglich."
Wie kann ich denn jetzt dieses Problem lösen? muss ich vielleicht irgendetwas vor "filternum" in der if-Abfrage schreiben? Ich habe es bereits mit string probiert aber es ging nicht.
Greetings Timo
-
Du versuchst einen string mit einem bool zuvergleichen, sagt ja auch die Fehlermeldung. Ich nehme mal an das der string die Wörter True oder False enthält. Nun kannst du einfach .ToString() beim bool-Wert aufrufen um es zu vergleichen. An sich kommt es nur auf die Werte an.
Koopakiller [kuːpakɪllɐ]
Webseite | Code Beispiele | Facebook | Snippets -
Danke Palin. Jetzt funktioniert es ohne Probleme.
Den Link werde ich mir heute Abend mal in Ruhe anschauen.
Ich benutze übrigens VisualStudio 2012.
Koopakiller, mein string enthielt die Zahlen 0, 1, 2. Diese hat VS wohl als bool interpretiert.
Aber danke für den .ToString()-Tip.
Greetings Timo
- Bearbeitet Timo Sö Dienstag, 12. März 2013 12:58