繁体   English   中英

WPF c#更改事件中的发送方属性

[英]WPF c# change sender property in event

是否可以在事件中更改发件人的属性?

我有10个图像控件在wpf中有自己的控件。 我将它们全部设置为鼠标进入和鼠标离开事件。 所有这些事件都一样(更改大小和Z索引),但针对特定的Image。

在事件中更改发送者属性的情况下,我将只有2个事件的方法,而不是20个。当我尝试更改发送者属性时,我看到它是只读的。

有可能吗?

将所有控件指向相同的处理程序。 您可以在设计时或通过代码执行此操作。

在处理程序中将发送方转换为控件的类型。

现在,当您更改其属性时,您将更改引发事件的控件的属性

PS在尝试访问它的成员之前,请不要忘记检查演员表是否有效。

在这里,您如何在XAML中做到这一点

/ <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void image1_MouseEnter(object sender, MouseEventArgs e)
        {
            //put your code here and all your images will points here 
        }

        private void image1_MouseLeave(object sender, MouseEventArgs e)
        {
             //put your code here and all your images will points here 
        }
    }
<Window x:Class="WpfApplication2.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>
        <Image Height="51" HorizontalAlignment="Left" Margin="91,116,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="61" MouseEnter="image1_MouseEnter" MouseLeave="image1_MouseLeave" />
        <Image Height="51" HorizontalAlignment="Left" Margin="91,116,0,0" Name="image2" Stretch="Fill" VerticalAlignment="Top" Width="61" MouseEnter="image1_MouseEnter" MouseLeave="image1_MouseLeave" />
        <Image Height="51" HorizontalAlignment="Left" Margin="91,116,0,0" Name="image3" Stretch="Fill" VerticalAlignment="Top" Width="61" MouseEnter="image1_MouseEnter" MouseLeave="image1_MouseLeave" />
        <Image Height="51" HorizontalAlignment="Left" Margin="91,116,0,0" Name="image4" Stretch="Fill" VerticalAlignment="Top" Width="61" MouseEnter="image1_MouseEnter" MouseLeave="image1_MouseLeave" />
    </Grid>
</Window>

//并在后面的代码中

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        image1.MouseEnter += image1_MouseEnter;
        image2.MouseEnter += image1_MouseEnter;
        image3.MouseEnter += image1_MouseEnter;
        image4.MouseEnter += image1_MouseEnter;


        image1.MouseEnter += image1_MouseLeave;
        image2.MouseEnter += image1_MouseLeave;
        image3.MouseEnter += image1_MouseLeave;
        image4.MouseEnter += image1_MouseLeave;

    }

    private void image1_MouseEnter(object sender, MouseEventArgs e)
    {

    }

    private void image1_MouseLeave(object sender, MouseEventArgs e)
    {

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM