Здравствуйте, VetalPPC, Вы писали:
[Skip]
VPP>Спасибо за помощь, но немного не то. В таком случае сообщение "Middle button clicked" срабатывает так же и в том случае если зажать кнопку в другом месте, а затем отжать на целевом элементе.
А проявить элементарную смекалку.... RTFM об Mouse Capturing...
private void TxtSample2_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Middle)
((FrameworkElement)sender).CaptureMouse();
}
private void TxtSample2_OnMouseUp(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Middle)
{
var element = (FrameworkElement)sender;
if (element.IsMouseCaptured)
{
element.ReleaseMouseCapture();
if (element.IsMouseOver)
MessageBox.Show("Middle button clicked");
else
MessageBox.Show("Middle button clicked oustide");
}
}
}
Подскажите, пожалуйста, как словить событие клика средней кнопки мыши? Нужен именно полноценный клик. В MouseUp, к сожалению, не получается проверить был ли MouseDown перед этим сделан на том же элементе.
Здравствуйте, VetalPPC, Вы писали:
VPP>Подскажите, пожалуйста, как словить событие клика средней кнопки мыши? Нужен именно полноценный клик. В MouseUp, к сожалению, не получается проверить был ли MouseDown перед этим сделан на том же элементе.
Если я правильно понял постановку задачи, то как то так (но подцепился я на PreviewMouseDown):
private void TxtSample2_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Middle)
((FrameworkElement)sender).CaptureMouse();
}
private void TxtSample2_OnMouseUp(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Middle)
{
var element = (FrameworkElement)sender;
element.ReleaseMouseCapture();
if (element.IsMouseOver)
MessageBox.Show("Middle button clicked");
else
MessageBox.Show("Middle button clicked outside");
}
}
Здравствуйте, Danchik, Вы писали:
D>Здравствуйте, VetalPPC, Вы писали:
VPP>>Подскажите, пожалуйста, как словить событие клика средней кнопки мыши? Нужен именно полноценный клик. В MouseUp, к сожалению, не получается проверить был ли MouseDown перед этим сделан на том же элементе.
D>Если я правильно понял постановку задачи, то как то так (но подцепился я на PreviewMouseDown):
D>D> private void TxtSample2_OnPreviewMouseDown(object sender, MouseButtonEventArgs e)
D> {
D> if (e.ChangedButton == MouseButton.Middle)
D> ((FrameworkElement)sender).CaptureMouse();
D> }
D> private void TxtSample2_OnMouseUp(object sender, MouseButtonEventArgs e)
D> {
D> if (e.ChangedButton == MouseButton.Middle)
D> {
D> var element = (FrameworkElement)sender;
D> element.ReleaseMouseCapture();
D> if (element.IsMouseOver)
D> MessageBox.Show("Middle button clicked");
D> else
D> MessageBox.Show("Middle button clicked outside");
D> }
D> }
D>
Спасибо за помощь, но немного не то. В таком случае сообщение "Middle button clicked" срабатывает
так же и в том случае если зажать кнопку в другом месте, а затем отжать на целевом элементе.
Здравствуйте, VetalPPC, Вы писали:
VPP>Подскажите, пожалуйста, как словить событие клика средней кнопки мыши? Нужен именно полноценный клик. В MouseUp, к сожалению, не получается проверить был ли MouseDown перед этим сделан на том же элементе.
вариант:
private void ButtonBase_OnClick(object sender, MouseButtonEventArgs e)
{
if (e.ClickCount == 1 && e.ButtonState == MouseButtonState.Pressed &&
e.ChangedButton == MouseButton.Middle)
{
}
}