Entwickler-Ecke
WinForms - Form mit MainMenü aus Konsole erzeugen
Andreas Vorbeck - Fr 11.11.16 12:06
Titel: Form mit MainMenü aus Konsole erzeugen
Hallo Leute, ich mache gerade ein Fernstudium und ich komme bei einer Aufgabe nicht weiter.
Vielleicht kann mir einer von Euch helfen.
Ich soll aus einer Konsolenanwendung eine Windows Form mit Mainmenü und einem Event Beenden erzeugen.
Nun die Form ist kein Problem, aber das Menü wird auf der Form nicht angezeigt.
Es gibt zwei Dateien, eine "Programm.cs" in der dieser Code steht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading.Tasks; using System.Drawing;
namespace Lektion3 { class Program { static void Main(string[] args) { Einsendeaufgabe_3 form = new Einsendeaufgabe_3(); Application.Run(new Einsendeaufgabe_3()); } } } |
und eine zweite Datei "Einsendeaufgabe_3.cs" in dem Dieser Code steht:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;
namespace Lektion3 { public partial class Einsendeaufgabe_3 : Form { public Einsendeaufgabe_3() { InitializeComponent(); }
private void InizializeComponent() { MenuStrip stripMenu1 = new MenuStrip(); stripMenu1.Items.Add("Testmenü");
((ToolStripMenuItem)stripMenu1.Items[0]).DropDownItems.Add("Beenden");
this.ClientSize = new Size(427, 233); this.Text = "Einsendeaufgabe_03";
this.Controls.Add(stripMenu1); } } } |
Nun frage ich mich warum das mit einem Button funktioniert aber bei einem MenuStrip nicht??
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - Fr 11.11.16 12:27
Hallo und :welcome:
warum verwendest du nicht den VS-Designer?
Auf Anhieb sehe ich jetzt auch keinen Fehler in deinem Code (aber du kannst ja einfach mal den mit dem VS-Designer generierten Code "*.designer.cs" vergleichen).
Ralf Jansen - Fr 11.11.16 12:49
Hast du mal debugged ob deine
InizializeComponent() Methode überhaupt aufgerufen wird? Nimm mal das partial der Form weg. Wenn das dann nicht mehr kompiliert schau dir mal den Methodennamen im Konstruktor der Form an.
Moderiert von
Th69: C#-Tags hinzugefügt
Andreas Vorbeck - Fr 11.11.16 13:04
Danke für die schnelle Antwort.
Ich habe die *.Designer.cs verglichen und in der einen schreibt er diese drei Zeilen dazu
C#-Quelltext
1: 2: 3:
| private System.Windows.Forms.MenuStrip stripMenu1; private System.Windows.Forms.ToolStripMenuItem testmenüToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem beendenToolStripMenuItem; |
nehme ich jetzt diese drei Zeilen und schreibe Diese in meine "Lektion3.Einsendeaufgabe_3.Designer.cs" wird z.B. stripMenu1 grün unterstrichen und sagt "Das Feld 'Lektion3.Einsendeaufgabe_3.wird nie verwendet". Compilieren lässt sich das ganze aber auf der Form wird der Menüstrip nicht angezeigt?
Moderiert von
Th69: C#-Tags hinzugefügt
Ralf Jansen - Fr 11.11.16 14:17
Wieso hast du überhaupt eine Lektion3.Einsendeaufgabe_3.Designer.cs?
Die gezeigte Klasse ist so geschrieben das man keine braucht. Nimm das partial bei der Klassendefinition weg, lösche die designer.cs und schreib den Methodennamen im Konstruktor richtig.
Th69 - Fr 11.11.16 15:31
@Ralf: Den Fehler habe ich wirklich nicht gesehen - wie gut, daß du drauf geschaut hast. :zustimm:
InitializeComponent() versus InizializeComponent()
Andreas Vorbeck - Fr 11.11.16 15:37
Vielen Dank Ralf, funktioniert. :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!