【问题标题】:MouseEnter and MouseLeave in WPFWPF 中的 MouseEnter 和 MouseLeave
【发布时间】:2015-05-08 08:11:47
【问题描述】:

我在 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;
}

总的来说,这是应该发生的。

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

如果有人可以帮助我,那就太好了。谢谢!

【问题讨论】:

    标签: c# wpf label labels


    【解决方案1】:

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

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

    【讨论】:

    • 我理解,但问题是这些标签是在程序运行时创建的,所以一开始在 XAML 文件中是看不到的。当鼠标悬停在动态创建的标签内容上时显示的标签取决于鼠标悬停在哪个标签上:\
    • 哦...明白了...您可以尝试的另一种方法是创建自己的自定义标签,只需在控件内添加鼠标进入和离开处理程序
    • 我想出了一个替代方案,但这需要我根据我的程序创建的额外标签的数量添加 X 个额外的函数:(
    • @User13888,根据您的第一条评论,您可以拥有一个适用于多个标签的事件处理程序。在代码中手动创建一个事件处理程序,类似于上面编码的一个 Dark Templar,并在创建它们时将其分配给每个标签。请注意,如果要销毁标签,还应确保删除事件处理程序,以避免内存泄漏。
    猜你喜欢
    • 2023-03-28
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多