ste*_*wpf 4 c# wpf mouse cursor
我需要在按下鼠标左键时更改鼠标光标.不幸的是,在释放鼠标左键之前,忽略对鼠标光标的更改.这有什么解决方法吗?谢谢你的提示!
(我正在使用WPF和C#)
编辑:
示例项目:http: //cid-0432ee4cfe9c26a0.skydrive.live.com/self.aspx/%c3%96ffentlich/WpfApplication5.zip (只需运行它,说明显示在应用程序中)
样本代码:
XAML:
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="695" Loaded="Window_Loaded">
<Grid>
<Button Content="Button1" Height="287" HorizontalAlignment="Left" Margin="12,12,0,0" Name="button1" VerticalAlignment="Top" Width="235" />
<Button Content="Button2" Height="287" HorizontalAlignment="Left" Margin="284,12,0,0" Name="button2" VerticalAlignment="Top" Width="278" MouseMove="button2_MouseMove" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
窗口类:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button2_MouseMove(object sender, MouseEventArgs e)
{
Cursor = Cursors.Cross;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
button1.Content="Step1: Left click on this button, \nhold down the left mouse button";
button2.Content = "(Make sure you don't hover this\n button before hovering Button1.\n Default application cursor\n is the normal arrow cursor)\n\n Step 2: Keep on holding the left mouse \nbutton, hover this button\n\nThe cursor won't change. (It will change after the \nleft mouse button was released)";
}
}
Run Code Online (Sandbox Code Playgroud)
我建议尽可能使用Preview*事件进行视觉更改,因为它会使您的逻辑很好地分开.此外,最好(恕我直言)使用该Mouse.OverrideCursor属性临时更改光标.
例如:
void Window_Loaded(object sender, RoutedEventArgs e)
{
// ...
button1.PreviewMouseLeftButtonDown += Button1_PreviewMouseLeftButtonDown;
button1.PreviewMouseLeftButtonUp += Button1_PreviewMouseLeftButtonUp;
}
void Button1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Mouse.OverrideCursor = Cursors.Cross;
Mouse.Capture(button1);
}
void Button1_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Mouse.Capture(null);
Mouse.OverrideCursor = null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7512 次 |
| 最近记录: |