当我的WPF应用程序加载时,一个图像显示在中间。如何处理图像外的鼠标点击。当用户点击图像外部时,它会隐藏起来。我的代码在c#中。
您可以简单地向顶级控件添加一个处理程序,例如Grid
、Window
等。在该处理程序中,您可以检查单击的控件是否为Image
,如果不是,则可以隐藏它:
XAML:
<Grid PreviewMouseLeftButtonDown="Grid_PreviewMouseLeftButtonDown">
...
<Image Name="TheImage" Source="/WpfApplication2;component/Images/Add_16.png" />
...
</Grid>
背后的代码:
private void Grid_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.OriginalSource != TheImage)
{
TheImage.Visibility = Visibility.Hidden;
}
}
虽然这满足了您的要求,但需要注意的是,一旦隐藏,Image
将不再"可点击"。
只需将代码MyImage.Visibility = System.Windows.Visibility.Hidden;
放入要捕获的任何事件中。
例如:
private void MyButton_Click_1(object sender, RoutedEventArgs e)
{
MyImage.Visibility = System.Windows.Visibility.Hidden;
}
private void MyTextbox_PreviewMouseDown_1(object sender, MouseButtonEventArgs e)
{
MyImage.Visibility = System.Windows.Visibility.Hidden;
}
private void MyWindow_MouseDown(object sender, MouseButtonEventArgs e)
{
MyImage.Visibility = System.Windows.Visibility.Hidden;
}
其中MyImage
是图像的名称,MyTextbox
是文本框的名称,MyButton
是按钮的名称,而MyWindow
是主窗口的名称
您可以简单地编写
YourImageName.Visibility = Visibility.Hidden;
将此代码写入任何控件,即TextBox
或Button
。
首先单击窗体以选择它。然后转到事件的部分(靠近属性部分),双击单击事件以在单击窗体时进行函数调用。在代码中,将sender对象与IsEqual(obj)
方法进行比较,查看sender是否为同一图像。如果不隐藏它。:)
您可以处理应用程序当前窗口的点击事件,在该事件内,您可以检查鼠标位置是在该图像内还是在该图像外,在此基础上,您可以设置您喜欢的图像可见性条件。
代码示例:
//registering event
Application.Curent.mainWindow.MouseRightButtonDown += MainWindow_MouseRightButtonDown;
//event implementation
void MouseRightButtonDown(object sender , MouseButtonEventArgs e)
{
//here you can check the ui element for image control using sender
//below will let you know the position of Click
e.GetPosition(// pass the ui element here)
}
注意:上面显示的代码是应用程序级别的点击处理。如果你不希望在应用程序级别上,您可以使用父xaml图像存在并执行相同的