#678 – 通过IsHitTestVisible属性使界面元素不响应鼠标(Hide an Element from the Mouse with IsHitTestVisible Property)

通过设置IsHitTestVisible 属性值为false,可以使界面元素不响应鼠标,鼠标事件也不会被触发。

在下面的例子中有两个Label,我们将其中一个的IsHitTestVisible 属性设为false。

<StackPanel>
    <Label Content="Mouse Sees Me" Background="AliceBlue" Margin="10"
           MouseMove="Label_MouseMove_1"/>
    <Label Content="Mouse Doesn't see Me" Background="Beige" Margin="10"
           IsHitTestVisible="False"
           MouseMove="Label_MouseMove_2"/>
</StackPanel>

我们给两个Label注册了鼠标事件,并在事件处理函数中打印鼠标的位置:

private void ReportMouse(string element, MouseEventArgs e)
{
    Point p = e.GetPosition(null);
    Console.WriteLine(string.Format("{0} sees mouse at ({1},{2})", element, p.X, p.Y));
}
 
private void Label_MouseMove_1(object sender, MouseEventArgs e)
{
    ReportMouse("Label 1", e);
}
 
private void Label_MouseMove_2(object sender, MouseEventArgs e)
{
    ReportMouse("Label 2", e);
}
当我们在两个Label上移动鼠标的时候,可以看到,只有鼠标在第一个Label(没有设置 IsHitTestVisible 为false)上的时候位置才会被打印。

原文地址:https://wpf.2000things.com/2012/10/29/678-hide-an-element-from-the-mouse-with-ishittestvisible-property/

***************************************************译者注*******************************************
将IsHitTestVisible 属性设置为false,可以禁止控件所有的鼠标交互。比如按钮的点击,或者想通过鼠标点击给控件设置输入焦点等等,这些都不起作用。但是仍然可以通过键盘Tab键将焦点移动到控件,然后进行操作。例如用Tab键将输入焦点移动到按钮上,按Enter键,响应按钮事件。
另外,如果将一个容器的IsHitTestVisible 属性设置为false,那么容器中所有的子控件都不参与点击测试(不响应鼠标的交互),即使你将子控件的IsHitTestVisible 属性设置为true。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值