将鼠标悬停在标签上时更改标签的前景色

时间:2013-05-03 15:38:32

标签: c# devexpress mousehover onmousemove

当我将鼠标悬停在标签上时,我正试图更改标签文字的颜色。我尝试将命令放在previewmousemove事件中,但这不起作用。

    private void hand_PreviewMouseMove(object sender, PreviewMouseEventArgs e)
        {
            Cursor.Current = Cursors.Hand;
            xrLabel260.BackColor = Color.CornflowerBlue;
        }

在此之后无效,我尝试使用mouseenter / mouseleave事件来改变颜色。

    private void xrLabel260_MouseEnter(object sender, EventArgs e)
    {

        xrLabel260.ForeColor = Color.CornflowerBlue;

    }

    private void xrLabel260_MouseLeave(object sender, EventArgs e)
    {
        xrLabel260.ForeColor = Color.Black;

    }

这也不起作用。我怎么能改变我的代码以便它能够工作?预先感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我个人会在你的xaml中做这样的事情: 编辑:我修改了这个以显示它如何适合主窗口。

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Label Content="My Label">
        <Label.Style>
            <Style TargetType="Label">
                <Setter Property="Foreground" Value="Black"/>
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Foreground" Value="Blue"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Label.Style>
    </Label>
</Grid>

答案 1 :(得分:1)

好像你没有为它添加事件处理程序(为标签注册鼠标事件):

xrLabel260.MouseEnter += xrLabel260_MouseEnter;

最合乎逻辑的地方是表单的加载例程。

编辑:对于WPF,你可以在XAML中有这样的东西(问题有EventArgs而不是MouseEventArgs,我认为它适用于WinForms):

<Label x:Name="xrLabel260" Content="Label" MouseEnter="xrLabel260_MouseEnter"/>

...然后在代码隐藏中:

    private void xrLabel260_MouseEnter(object sender, MouseEventArgs e)
    {
        xrLabel260.Foreground =  Brushes.BlanchedAlmond;
    }