I\'m remaking windows Minesweeper (from XP) and something they had included was that if you click a number with as many flags as it\'s number with the left and right mouse b
Kind of an old question, but I came across this (coincidentally also while doing a Minesweeper clone) and felt it was missing something. If you want to have the two-button click but still catch regular single-button clicks as well, you can do the following:
private bool left_down;
private bool right_down;
private bool both_click;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
left_down = true;
if (right_down)
both_click = true;
}
if (e.Button == MouseButtons.Right)
{
right_down = true;
if (left_down)
both_click = true;
}
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (!right_down)
{
if (both_click)
//Do both-click stuff here
else
//Do left-click stuff here
both_click = false;
}
left_down = false;
}
if (e.Button == MouseButtons.Right)
{
if (!left_down)
{
if (both_click)
//Do both-click stuff here
else
//Do right-click stuff here
both_click = false;
}
right_down = false;
}
}
It moves the detection to the mouse-up rather than the mouse-down. It doesn't do anything until you release both buttons. This works almost exactly like the Windows 7 version of Minesweeper, except that the right button alone in the original operates on mouse-down. (I honestly prefer my version). There's a bit of redundancy in that the both-click case is called in two places depending on whether you release the left or right button first, but this should probably be a single-line function-call anyhow. Bonus: You can check the both_click
flag from elsewhere in order to draw the hint-square around your cursor showing which squares will be revealed when you release the buttons.