Autor Beitrag
aloneboy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Do 30.10.14 23:36 
Hallo zusammen,

möchte gerne beim öffnen eines Menüs vorher eine Passwordabfrage stellen.
Solle man das Passwort falsch bzw. den Dialog mit abbrechen beenden sollte das Menü sich wieder schließen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 private void einstellungenToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
        {
            InputDialog locked = new InputDialog("gesperrt""Passwort:"""true);
            locked.FormClosed += lockedschließen;
            if (locked.ShowDialog() == DialogResult.OK)
            {
                if (locked.ResultText.ToString() == "experte")
                    einstellungenToolStripMenuItem.ShowDropDown();
                else
                    einstellungenToolStripMenuItem.HideDropDown();

            }
           
        }
    private void lockedschließen(object sender,EventArgs e)
        { einstellungenToolStripMenuItem.HideDropDown();}


Was nicht klappt ist das schließen oder besser das verstecken des Menüs. Es bleibt einfach geöffnet.

Klicke ich jedoch ein Button, wird das Menü geschlossen

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
  private void button1_Click(object sender, EventArgs e)
        {
            einstellungenToolStripMenuItem.HideDropDown();

        }


Was muss ich machen damit es klappt?

Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 30.10.14 23:47 
Wieso machst du das am MenuItem und nicht am ToolStrip selbst?
Ein ContextMenu oder ein Menu DropDown hat ein Opening Event mit EventArgs über die man ganz ~offiziell~ das öffnen canceln kann.
aloneboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Fr 31.10.14 22:20 
Es sind zwei Menüs nebeneinander und die Passwortabfrage sollte nur bei einen sein. Kann man es dann unterscheiden oder festlegen bei welchen Menü die Abfrage kommt?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 31.10.14 22:49 
Jedes Menü hat seinen eigenen Event ist also völlig egal wie viele du davon hast.
aloneboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Fr 31.10.14 22:59 
Danke, ich hoffe ich finde es. Habe schon die Tage gesucht doch nichts gefunden was mir weiterhilf
aloneboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Fr 31.10.14 23:47 
Hallo,

habe mal nachgesehen, ich habe ein MenuStrip und kein ToolStrip.

habe das ganze auch in ein Opening verschoben, doch ein EventArgs e mit cancel gibt es dort nicht.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
   private void einstellungenToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
        {
            InputDialog locked = new InputDialog("gesperrt""Passwort:"""true);
            locked.FormClosed += lockedschließen;
            if (locked.ShowDialog() == DialogResult.OK)
            {
                if (locked.ResultText.ToString() == "experte")
                    einstellungenToolStripMenuItem.ShowDropDown();
                else
                   ???
                }
        }
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 01.11.14 00:44 
Ich hatte dich in einem ContextMenu verortet da machte das für mich zumindest noch halbwegs Sinn. Bei einem Menü in das öffnen einzugreifen ist doch eher ungewöhnlich.
Ich wüßte nicht da es da einen vorgesehen Ort gibt das zu tun. Der Event der mir einfällt der vielleicht früh genug auftritt um dort in das öffnen noch einzugreifen wäre MouseDown. Vielleicht funktioniert da noch ein HideDropDown.
aloneboy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45



BeitragVerfasst: Sa 01.11.14 00:59 
Danke,

Ich habe es erstmal mit enabled gelöst, ist zwar nicht so elegant vom Aussehen aber erfüllt seinen Zweck.