MouseEventHandler only reports MouseButtons.Left in mouse move and a double click

0
0

The MouseMove event handler does not report  MouseButton.None, MouseButtons.Middle or  MouseButtons.Right always says MouseButtons.Left.

Also Double clicks are not reported for Middle or Right button either.

Note: you need to wired up event handlers as Wisej uses Lazy Events and  you have to subscribe to some of the Events to enable them and have them fire..

this.MouseMove += new MouseEventHandler(MouseMoved);

public void MouseMoved(object sender, MouseEventArgs e)
{
Debug.Print($”\r\nMouse x={e.X} y={e.Y} “);
if (e.Clicks > 0)
{
Debug.Print($”MouseButton – {e.Button.ToString()} # {e.Clicks }”);
}
}

Also tried wiring up additional handlers due to lazy loading, but still no MouseButtons.Middle or  MouseButtons.Right on MouseMove  ?

this.MouseClick += new MouseEventHandler(MouseClicked);
this.MouseDoubleClick += new MouseEventHandler(MouseDoubleClicked);

this.MouseDown += new MouseEventHandler(MouseDowned);
this.MouseUp += new MouseEventHandler(MouseUped);

 

  • You must to post comments
0
0

Hi David,

enhancement #3025 was added with Wisej.NET 3.1.1

Best regards
Frank

  • You must to post comments
0
0

Hi Frank

Thanks for your prompt reply, in the interim I implemented the double-click feature for all mouse buttons in C# managed code

void WireUpEvents()
{
this.MouseMove += new MouseEventHandler(MouseMoved);
this.MouseClick += new MouseEventHandler(MouseClicked);
this.MouseDoubleClick += new MouseEventHandler(MouseDoubleClicked);

if (t == null)
{
t = new Timer();
t.Interval = 350;
t.Tick += T_Tick;
t.Enabled = false;
}
}

private void T_Tick(object sender, EventArgs e)
{
t.Enabled = false;  //Timeout
}

public void MouseClicked(object sender, MouseEventArgs e)
{
MouseBth = e.Button;

if (MouseBth != MouseButtons.Left)
{
if (t.Enabled == true)
{
//If time since last click is low, its a double click
MouseDoubleClicked(sender, e); //note: doesn’t cause override so,
OnMouseDoubleClick(e); // Call override manually
}
else
{
//Start monostable on first click
t.Enabled = true;
}
}
Debug.Print($”Mouse Click – {e.Button.ToString()} # {e.Clicks }”);
}

public void MouseDoubleClicked(object sender, MouseEventArgs e)
{
MouseBth = e.Button;
Debug.Print($”Double Click – {MouseBth.ToString()} # {e.Clicks }”);
}

protected override void OnMouseDoubleClick(MouseEventArgs e)
{
//Now this works for all mouse buttons, not just the left one
var task = _GetTaskUnderMouse(e.Location);
if (task != null)
{
OnTaskMouseDoubleClick(new TaskMouseEventArgs(task, _mChartTaskHitRects[task], e.Button, e.Clicks, e.X, e.Y, e.Delta));
}

base.OnMouseDoubleClick(e);
}

  • You must to post comments
0
0

Hi David,

while what you see is normal behaviour and by design in browsers
(see https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button)
I still logged it as an enhancement request. Issue number is #3025 for your reference.

We´ll let you know when this is available.

Best regards
Frank

  • You must to post comments
Showing 3 results
Your Answer

Please first to submit.