Autor Beitrag
VampireSilence
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: Fr 17.09.10 19:56 
Der Titel klingt erstmal einfach, im Designer ists auch kein Problem. Aber wenn ich versuche ein ContextMenu zur Laufzeit zu erstellen, bricht die Methode mal wieder einfach ab. Habe die Tipps aus meinem alten Thema (Einzelschritte, Try/Catch) beherzigt, aber diese führten hier leider auch nicht zum Erfolg.

Habe folgende Dinge schon seperat probiert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
ContextMenuStrip mnuCtx = new ContextMenuStrip();
ContextMenuStrip mnuCtx = new ContextMenuStrip(this.components);
System.Windows.Forms.ContextMenuStrip mnuCtx = new System.Windows.Forms.ContextMenuStrip();
System.Windows.Forms.ContextMenuStrip mnuCtx = new System.Windows.Forms.ContextMenuStrip(this.components);
MenuStrip mnuCtx = new System.Windows.Forms.MenuStrip();
MenuStrip mnuCtx = new System.Windows.Forms.MenuStrip(this.components);
System.Windows.Forms.MenuStrip mnuCtx = new System.Windows.Forms.MenuStrip();
System.Windows.Forms.MenuStrip mnuCtx = new System.Windows.Forms.MenuStrip(this.components);


Absolut nichts davon funktioniert und die Methode bricht grundlos ab. Das kann ja wohl nicht sein. Einige dieser Zeilen stehen 1:1 bei mir im Designer (abgesehen mal vom Variablentitel) und dort funktioniert es schließlich auch. TryCatch wird hier übrigens ignoriert - der Code bricht trotzdem einfach lautlos ab.

Wäre schön, wenn ihr mir nochmal ein paar Tipps geben könntet.

mfg
- VampireSilence
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 17.09.10 20:01 
Was genau erwartest Du denn, was passiert? :-)

Du hast ja jetzt erst einmal nur eine Instanz der entsprechenden Klasse erstellt. Die weiß ja z.B noch nix davon, wo das Kontextmenü zu erscheinen hat.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
VampireSilence Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: Sa 18.09.10 06:59 
Ich erwarte in erster Linie mal, dass die Methode entweder abläuft oder mir nen Fehler wirft.

Mir ist klar, dass ich das Menü nach seiner Erstellung noch einblenden muss, aber bis dahin schafft es die Methode ja nichtmal. Und deswegen hat alles, was danach noch an Code kommt auch erstmal keine Relevanz.

mfg
- VampireSilence
Trashkid2000
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 561
Erhaltene Danke: 137



BeitragVerfasst: Sa 18.09.10 10:34 
Nur das ContextMenuStrip zu erzeugen reicht nicht. Solange dort noch keine ToolStripMenuItems drin sind, wird das ContextMenuStrip auch nicht angezeigt. Wäre ja auch total sinnlos.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
ContextMenuStrip contextMenuStrip1 = new ContextMenuStrip();
            
//Einträge für das MenuStrip erzeugen
ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem() { Text = "Item1" };
ToolStripMenuItem toolStripItem2 = new ToolStripMenuItem() { Text = "Item2" };

//Click-Events registrieren
toolStripItem1.Click += new EventHandler(toolStripItem1_Click);
toolStripItem2.Click += new EventHandler(toolStripItem2_Click);

//Einträge hinzufügen
contextMenuStrip1.Items.Add(toolStripItem1);
contextMenuStrip1.Items.Add(toolStripItem2);

//ContextMenuStrip einem Control zuordnen (hier der gesamten Form)
this.ContextMenuStrip = contextMenuStrip1;


So könnte das Ganze aussehen...

Marko
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 18.09.10 11:18 
user profile iconVampireSilence hat folgendes geschrieben Zum zitierten Posting springen:
Ich erwarte in erster Linie mal, dass die Methode entweder abläuft oder mir nen Fehler wirft.

Wie äußert sich denn, dass sie nicht abläuft?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
VampireSilence Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: So 19.09.10 16:10 
Ok, also hier der komplette Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
            ToolStripItem[] mnuItem = new ToolStripItem[1];
            mnuItem[0] = new System.Windows.Forms.ToolStripMenuItem("Foobar");

            // Hier steht jeweils eine Zeile aus meinem 1. Post

            mnuCtx.Items.AddRange(mnuItem);

            mnuCtx.Show();


Das wäre er. Alles läuft erstmal korrekt ab, aber bei Zeile 4 bricht die Methode dann ab. In dieser Zeile habe ich wie gesagt, jeweils eine der Zeile stehen gehabt, die ich im ersten Post schon benannt habe. Aber keine von denen funktioniert.

Ich will doch eigtl nur wissen, warum das so ist und warum die gleichen Zeilen im Designer nicht abbrechen.

mfg
- VampireSilence
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 19.09.10 16:19 
Dieser Code geht bei mir und zeigt am oberen linken Bildschirmrand tatsächlich auch das Kontextmenü an.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            ToolStripItem[] mnuItem = new ToolStripItem[1];
            mnuItem[0] = new System.Windows.Forms.ToolStripMenuItem("Foobar");

            var mnuCtx = new ContextMenuStrip();
            // Hier steht jeweils eine Zeile aus meinem 1. Post

            mnuCtx.Items.AddRange(mnuItem);

            mnuCtx.Show();


Der Fehler muss also an anderer Stelle liegen.

Und es kommt keinerlei Fehlermeldung?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
VampireSilence Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: So 19.09.10 17:12 
Ok, das is echt deprimierend. Aber zumindest weiss ich schonmal, dass ich nicht bescheuert bin.

Nein, es wird wirklich überhaupt garnichts angezeigt. Selbst nen TryCatch mit abgefangener Exception wird einfach ignoriert. Also der Eintritt ins Try wird vom Code regulär vollzogen und an der betreffenden Zeile bricht er wieder einfach ab, ohne aber das Catch zu behandeln.

Ich habe mir auch schon überlegt, ob sich in den Projekteigenschaften nicht irgendwas einstellen lässt, was das öffnen von ContextMenüs verhindern könnte, oder ob es sonst irgendwelche umgebungsabhängigen Dinge gibt, die darauf Einfluss nehmen könnten, aber da fällt mir nichts ein und ansonsten habe ich auch überall noch die Standards aus der WindowsForms-Projektvorlage drin. Ich bin echt ratlos.

mfg
- VampireSilence
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 19.09.10 17:14 
Kannst Du das Projekt evtl. mal anhängen?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
VampireSilence Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 109
Erhaltene Danke: 5


C# (VS 2008 Express), PHP/MySQL, Windows XP
BeitragVerfasst: Mo 20.09.10 03:14 
Ne, leider nicht weil da noch Sachen von der Firma drin sind.

Hab aber vorhin nochmal nen neues WinForms-Projekt erstellt und den Code in diesem Rohling anstandlos zum Laufen bekommen. Das kann wirklich nur bedeuten, dass irgendetwas mit meinem Projekt nicht stimmt. Aber das werde ich wohl oder übel dann alleine herausfinden müssen. Trotzdem Danke !

mfg
- VampireSilence