2012-09-13 16 views
6

Ich entwerfe eine Protokollierungsfunktion, mit der der Benutzer auswählen kann, welches Ereignis er protokollieren möchte. Auf Schaltfläche klicken, zeige ich diese Art von Menü: Context Menu on Button clickKontrollkästchen für Kontextmenüstrip oder Kontextmenü einer Schaltfläche anzeigen

Benutzer kann mehrere Ereignisse auswählen, so I „Mark Check“ zeigen müssen infront der gewählten Option, wenn der Benutzer darauf klickt.

Ich kann keine Optionen wie "Checked" oder "CheckOnClick" finden, wie in this question erwähnt.

Ich versuchte mit ContextMenu und ContextMenuStrips, konnte aber Checkboxen nicht erreichen. Irgendwelche Vorschläge ??

+0

Wenn meine Antwort, die Sie unterstützt, würden Sie bitte so freundlich sein, sie als die für zukünftige vistors richtige Antwort zu akzeptieren. Vielen Dank. –

Antwort

9

Ich sehe nichts von Ihrem Code, also weiß ich nicht, wie Sie dieses Menü erstellen. Aber im Allgemeinen, hier ist, wie Sie auf die Checked Eigenschaft zugreifen.

((ToolStripMenuItem)contextMenuStrip.Items[0]).Checked = true; //false; 
((ToolStripMenuItem)contextMenuStrip.Items[1]).Checked = true; //false; 
((ToolStripMenuItem)contextMenuStrip.Items[2]).Checked = true; //false; 

Sie können sie entweder als wahr oder falsch zuweisen. Wenn Sie Ihren ToolStripItems benannt haben, können Sie direkt auf sie zugreifen, anstatt auf das Array Items zuzugreifen.

contextMenuStrip.event1.Checked = true; //false; 

Wie Sie sehen können, verwende ich eine ContextMenuStrip.

+0

Aber es sieht nicht wie Checkbox in der Benutzeroberfläche aus? nur wie handeln? –

+0

Ich werde hinzufügen ShowCheckMargin -Eigenschaft muss auf True festgelegt werden, wie die Antwort unten sagt. – Russell

1

Während Sie könnten verwenden:

((ToolStripMenuItem)contextMenuStrip.Items[0]).Checked = true; //false; 

dies kann, weil zu einem späteren Zeitpunkt gefährlich sein, Sie könnten Ihre Menüpunkte neu anordnen und dann wird der Code nicht überein.

Stattdessen im Designer klicken Sie auf das Menü dann das Element (wie Event1) Modifikatoren zu Öffentliche oder Interne die Eigenschaften und stellen Sie das Element zu sehen. Dann in Ihrem Code können Sie den Namen des Elements eingeben und stellen Sie die Kontrolle:

event1_ToolStripMenuItem.Checked = true; //false; 

Hinweis: Sie brauchen nicht zu Namen der Contet Menüleiste eingeben. Nur der Name des Artikels.

3

Damit dies visuell funktioniert, müssen Sie sicherstellen, dass die Eigenschaft "ShowCheckMargin" aktiviert ist. Andernfalls wird die ".Checked" -Eigenschaft nichts tun.

3

Ändern Sie die Eigenschaft CheckOnClick zu Wahre

enter image description here