Announcement

Collapse
No announcement yet.

Listbox-Ereignisse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Listbox-Ereignisse

    Hallo zu zusammen,
    ich habe folgendes Problem. Ich benutzte das SelectedIndexChanged und das MouseDoubleClick Ereignis einer Listbox. Das SelectedIndexChanged wird vor dem MouseDoubleClick Ereignis ausgelöst. In dem SelectedIndexChanged werden bestimmte Kriterien abgefragt. Bei manchen Kriterien wird eine Messagebox angezeigt.

    Wenn ich nun einen Doppelkick auf einen Eintrag in der Listbox mache und in diesem Fall wird die Messagebox ausgelöst, kommt das Doppelklickereignis nicht mehr.

    Nun meine Frage:
    Gibt es explizit eine Möglichkeit den Doppelklick in dem SelectedIndexChanged Ereignis festzustellen um dann nach der Messagebox darauf zu reagieren.

  • #2
    Hallo,
    keiner ne Idee...???

    Oder, evtl. einen anderen Lösungsweg ?

    Comment


    • #3
      Du bekommst doch in deinem Handler SelectedIndexChanged den Event übergeben?

      Was hat dieser für Eigenschaften
      Christian

      Comment


      • #4
        Die MessageBox schnappt sich vermutlich den 2.ten Klick. Ich sehe keinen sauberen Weg eine MessageBox in einem Event das bereits bei einem Klick reagiert anzuzeigen und dann noch einen DoubleClick Event zu erhalten. Denn DoubleClick in einem der vorherigen Events festzustellen ist nicht möglich da der 2.Klick ja eventuell noch nicht erfolgt ist.

        Brauchst du die Kriterien für deinen Code im MouseDoubleClick ? Dann solltest du die auch erst dort erfragen. Für den Fall das gar kein DoubleClick folgt und du aber trotzdem die Kriterien brauchst musst du die Abfrage der Kriterien dann eben nachholen. Vielleicht geht das über einen Timer. Also in SelectedIndexChanged den Timer starten. Wenn DoubleClick folgt dort Timer stoppen und selbst Kriterien erfragen ansonsten eben im Timer Event die Kriterien abfragen. Dabei musst du aber natürlich darauf achten das der Timerinterval größer ist als der der aus der Systemeinstellung der Maus-Doppelklickgeschwindigkeit folgt.

        Comment


        • #5
          Die Idee mit dem Timer wäre schon OK.

          Ich habe im SelectedIndexChanged einen Timer gestartet, der soll erst mal 1000 ms dauern. Dann soll die Prüfung laufen.
          Aber genau diese 1000 ms passiert dann auch gar nichts. Das Doppelklick Event wird nicht ausgelöst.

          Oder wie hattest du das gemeint.

          Comment


          • #6
            Habe das gerade mal ausprobiert. Bei mir gehts.
            Ist c# aber das Prinzip sollte deutlich sein.

            [Highlight=C#]private System.Timers.Timer _timer = new System.Timers.Timer(500);

            public Form1()
            {
            InitializeComponent();
            _timer.Elapsed += ti_Elapsed;
            }

            private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
            _timer.Enabled = false;
            listBox1.Items.Add("DoubleKlick");

            //Kriterien über Messageboxen erfragen
            }

            private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
            _timer.Enabled = true;
            }

            private void ti_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
            _timer.Enabled = false;
            MethodInvoker method = new MethodInvoker(delegate(){ listBox1.Items.Add("SingleKlick"); });
            listBox1.Invoke(method);

            //Kriterien über Messageboxen erfragen
            }[/Highlight]

            Comment


            • #7
              private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
              Ähhh, würde mich jetzt hier im Vergleich zu anderen Sprachen interessieren:

              Hat jetzt EventArgs e nicht diese Informationen? Also welche Buttons wurden gedrückt oder welche Taste war Ursache um das Select auszulösen?
              Christian

              Comment


              • #8
                Die Winforms Controls sind in allen .NET Sprachen die gleichen.

                Wenn du in VB.Net mehr bekommst als EventArgs hast du keine Winforms Listbox genommen. Denn von der bekommst du nur leere EventArgs. (Wie aus der Hilfe auch einfach ersichtlich)

                Comment


                • #9
                  Sorry programmiere nicht NET -> sah den Vergleich mehr zu Java. Dort werden ebenfalls die Handler angelegt und die Events liefern diese Infos auf diese Art.
                  Christian

                  Comment


                  • #10
                    Oh die Frage war von dir Christian. Ich hatte im Gefühl das das vom ursprünglichen Fragesteller kam und hatte mich gewundert das ihm das nicht bewusst war wo er doch die ganze Zeit an dem Event rumspielt. Dann hätte ich den ~Ließ doch mal die Hilfe~ Unterton weggelassen

                    Comment


                    • #11
                      Hallo Ralf,
                      danke es hat geklappt. Ich hatte zwar etwas schwierigkeiten deinen Code ins VB zu portieren, habs aber hinbekommen...

                      naochmals Danke

                      Comment

                      Working...
                      X