WPF中的MouseEnter和MouseLeave

3

我的WPF程序基于条件动态添加标签。但是我在设置标签的MouseEnter和MouseLeave属性时遇到了一些问题。这是我当前的代码。

Test1.MouseEnter += PresetLabelHover(ID);
Test1.MouseLeave += PresetLabelHoverEnd();

PresetLabelHover将使名为PresetLabel的标签可见,而PresetLabelHoverEnd将使名为PresetLabel的标签不可见。ID是程序使用的数字,需要传递给PresetLabelHover以设置PresetLabel的内容。Test1是程序创建的标签。

我遇到的错误是

Cannot implicitly convert type 'void' to System.Windows.Input.MouseEventHandler'

这是我编写的PresetLabelHover和PresetLabelHoverEnd代码。
private void PresetLabelHover(int number)
{
    PresetLabel.Content = number;
    PresetLabel.Visibility = Visibility.Visible;
}

private void PresetLabelHoverEnd()
{
    PresetLabel.Visibility = Visibility.Hidden;
}

总的来说,这就是预期发生的事情。

程序插入标签。当鼠标悬停在特定标签上时,它将显示一个不同的标签,其中包含我传递的数字值。一旦鼠标离开标签区域,另一个标签将变为不可见状态。

如果有人能帮我解决这个问题,那就太好了。谢谢!

1个回答

0

我认为鼠标进入和鼠标离开是事件处理程序,就像点击等一样...你应该能够从你的设计师那里添加它们...只需单击标签并在“事件”选项卡下检查...然后寻找鼠标进入和鼠标离开事件...应该看起来像这样

    private void Label1_MouseEnter(object sender, MouseEventArgs e)
    {
        Label1.Content = number; 
        Label1.Visibility = Visibility.Visible;
    }

我理解,但问题在于这些标签是在程序运行时创建的,因此在XAML文件中一开始是看不到的。当鼠标悬停在动态创建的标签内容上时显示的标签取决于鼠标所在的标签:\ - User13888
哦...明白了...那么你可以尝试另一种方法,就是创建自己的自定义标签,并在控件内添加鼠标进入和离开处理程序。 - Dark Templar
我找到了一种替代方案,但这需要我根据程序创建的额外标签数量添加X个额外函数 :( - User13888
@User13888,根据你的第一条评论,你可以创建一个事件处理程序来为多个标签工作。手动在代码中创建一个类似于上面Dark Templar编写的事件处理程序,并在创建每个标签时将其分配给它们。请注意,如果您要销毁标签,则还应确保删除事件处理程序,以避免内存泄漏。 - Sean Beanland

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接