Autor Beitrag
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mi 20.12.17 11:05 
Hallo Leute,

folgendes:
Ich habe ein ContextMenu, auf dem sich ein ToolStripMenuItem befindet (beides habe ich mit dem Designer erstellt).
Dass ContextMenu rufe ich über .Show() in einer Event-Methode eines anderen Objekts auf.

Über ein ItemClicked-Event des ContextMenus werden im Code die Checked-Eigenschaften verschiedener ToolStripMenuItems verändert.
Nach Ablauf dieses Events werden aber alle Änderungen verworfen und kein Item auf dem ContextMenu ist ausgewählt.

Frage: Muss ich beim Event oder beim ContextMenu noch irgendeinen Wert setzen, der das Standard-Verhalten abbricht (vgl. e.Cancel von anderen Events)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
private void contextMenuStripBsp_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    // Alle Haken an Items entfernen
    UncheckAllContextMenuItems();
    // Haken neu setzen
    this.toolStripMenuItemBsp.Checked = true;
}

Gruß Julian

PS: Dasselbe Prinzip funktioniert mit ToolStripMenuItems, die sich in einem MenuStrip befinden.

EDIT: Ich konnte die gewünschte Funktionalität erreichen, indem ich die Checked-bool-Werte der einzelnen Items im ItemClicked-Event in einem Array speichere und diese Werte dann in einem Opening-Event des ContextMenus wieder den einzelnen ToolStripMenuItems (nicht ContextMenu.Items!) zuweise.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 20.12.17 12:23 
Hallo,

also irgendwas ist da aber noch komisch. Ich habe das mal nachgebaut. Ein ContextMenu mit entsprechenden Items, keine weiteren Einstellungen verändert. Ein Button öffnet das Menü und der Klick auf das erste Item soll die anderen beiden anhaken. Das tut es auch und der Status bleibt erhalten, auch wenn das Menü zwischendurch geschlossen war.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void toolStripMenuItem1_Click(object sender, EventArgs e)
        {
            toolStripMenuItem2.Checked = true;
            toolStripMenuItem3.Checked = true;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            contextMenuStrip1.Show(button1, new Point(00));
        }
    }


Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: erfahrener Neuling
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mi 20.12.17 13:01 
Danke für den Hinweis! Hab's eben auch nochmal getestet. Bei mir funktioniert das auch, wenn ich für jedes Item ein Clicked-Event mache.

Nur wenn ich im ContextMenu-ItemClicked Event das geklickte Item ermittle und dann direkt anspreche, ist beim nächsten Aufruf gar kein Item gecheckt :nixweiss:
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mi 20.12.17 13:08 
Wie ist denn die CheckOnClick-Eigenschaft der Items bei Dir gesetzt?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: erfahrener Neuling
erfahrener Neuling Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Mi 20.12.17 14:07 
user profile iconChristian S. hat folgendes geschrieben Zum zitierten Posting springen:
Wie ist denn die CheckOnClick-Eigenschaft der Items bei Dir gesetzt?

Da hattest du den richtigen Riecher!
Die war bei allen Items auf true gesetzt (weil ich dachte, ansonsten kann man sie gar nicht checken :nut:)

Wenn man bei allen false setzt, funktionierts!