Laden...

Rechts Click auf Button mit MouseClick auswerten

Erstellt von Bonvie vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.302 Views
Bonvie Themenstarter:in
173 Beiträge seit 2006
vor 14 Jahren
Rechts Click auf Button mit MouseClick auswerten

Hallo an alle,
ich würde gerne mit MouseClick() den rechts Click auf einen Button auswerten.
Da ich die Klasse bereits abgeleitet habe könnte ich dort auch etwas überschreiben, aber was?

In dem folgenden Beispiel, verwende ich die standard Klasse (von der ich abgeleitet habe) die leider schön zeigt das rechts und mittel Click ignoriert werden bzw. nicht zu Auswertung kommen. Wo werden dies verschluckt?

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_MouseClick(object sender, MouseEventArgs e)
        {
            //button was clicked by the mouse   
            if (e.Button == MouseButtons.Left)
                MessageBox.Show("Left button click");
            else if (e.Button == MouseButtons.Middle)
                MessageBox.Show("Middle button click");
            else if (e.Button == MouseButtons.Right)
                MessageBox.Show("Right button click");   
        }
    }
}

Danke und Gruß
Bonvie

916 Beiträge seit 2008
vor 14 Jahren

Hast du es mal mit MouseDown probiert? Und dort kannst du dir ein Flag setzen und merken ob die rechte Maustaste gedrückt wurde, und entsprechend im MouseUp event darauf reagieren.

Again what learned...

Bonvie Themenstarter:in
173 Beiträge seit 2006
vor 14 Jahren

Jein, wir wollte erstmal mit MouseClick arbeiten (so der Plan).
Erst wenn hier keiner eine Idee hat wollte ich dann über MouseDown gehen.

private void button1_MouseClick(object sender, MouseEventArgs e)
{
   //button was clicked by the mouse   
   if (e.Button == MouseButtons.Left)
       MessageBox.Show("1- Left button click");
   else if (e.Button == MouseButtons.Middle)
       MessageBox.Show("1- Middle button click");
   else if (e.Button == MouseButtons.Right)
       MessageBox.Show("1- Right button click");   
}

private void button1_MouseDown(object sender, MouseEventArgs e)
{
   //button was clicked by the mouse   
   if (e.Button == MouseButtons.Left)
       MessageBox.Show("2- Left button click");
   else if (e.Button == MouseButtons.Middle)
       MessageBox.Show("2- Middle button click");
   else if (e.Button == MouseButtons.Right)
       MessageBox.Show("2- Right button click");   
}

Habe es kurz zusammen geklickt, jetzt komm ich zwar zu "2- Middle button click" aber ein "1-..." taucht überhaupt nicht mehr auf.
Das kann ich aktuell noch nicht abschätzen, was ich damit woanders evt. anstelle.

B
142 Beiträge seit 2007
vor 14 Jahren

..Click geht doch nur mit der linken Maustaste, bzw. welche unter Windows eingestellt ist (z.B. für Linkshänder)

Wenn ich das richtig gelesen habe, könnte dir die ButtonBase Klasse helfen!

Bonvie Themenstarter:in
173 Beiträge seit 2006
vor 14 Jahren

Ok, mit MouseClick wird das wohl nichts. Zumindest laut hier:
15.2.4 Die »Click«-Ereignisse

D.h. ich bin bei MouseDown oder MouseUp. Was ist richtig bei beiden kann ich mit MouseEventArgs abfragen welcher Button verwendet wurde.
Nach dem Artikel oben ist das Click-Event genau dazwischen: "...Das Click-Ereignis tritt nach dem Ereignis MouseDown, aber noch vor MouseUp auf. ..."

Gibt es ein best practice?

Gruß
Bonvie

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Bonvie,

Gibt es ein best practice?

worauf genau bezieht sich das? Wie du am besten ein eigenes Click-Event auslösen kannst, oder was?

herbivore

Bonvie Themenstarter:in
173 Beiträge seit 2006
vor 14 Jahren

Nein eher das Auswerten, d.h. eher so.

private void button1_MouseDown(object sender, MouseEventArgs e)
{
   //button was clicked by the mouse   
   if (e.Button == MouseButtons.Left)
       MessageBox.Show("2- Left button click");
   else if (e.Button == MouseButtons.Middle)
       MessageBox.Show("2- Middle button click");
   else if (e.Button == MouseButtons.Right)
       MessageBox.Show("2- Right button click");
} 

oder so:

private void button1_MouseUp(object sender, MouseEventArgs e)
{
   //button was clicked by the mouse   
   if (e.Button == MouseButtons.Left)
       MessageBox.Show("2- Left button click");
   else if (e.Button == MouseButtons.Middle)
       MessageBox.Show("2- Middle button click");
   else if (e.Button == MouseButtons.Right)
       MessageBox.Show("2- Right button click");
} 

oder sogar in Kombination ?

49.485 Beiträge seit 2005
vor 14 Jahren

Hallo Bonvie,

ein normaler Button drückt sich beim Down ein, springt beim Leave wieder raus, drückt sich beim erneuten Enter (sofern die Maussaste immer noch gedrückt ist) wieder ein, und löst letztendlich das Click beim (= unmittelbar vorm) Up aus. Wenn du so willst, wäre die Best Practice, wenn sich der dein Button genauso verhalten würde.

herbivore