一、简介

WPF用来好久,没有详细分析btnStart_Click(object sender, RoutedEventArgs e),今天和大家分享一下,点击事件这两个参数的来龙去脉。

   private void btnStart_Click(object sender, RoutedEventArgs e)
        {
           
        }

界面及其代码如下:

 WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

<Window x:Class="AForge.Wpf.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:AForge.Wpf"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="422.669"
        Height="350"
        mc:Ignorable="d">
    <Grid>
        <Image x:Name="videoPlayer" Margin="10,0,10,70" />
        <ComboBox x:Name="comboBox"
                  Width="167"
                  Height="21"
                  Margin="10,0,0,25"
                  HorizontalAlignment="Left"
                  VerticalAlignment="Bottom"
                  DisplayMemberPath="Name"
                  ItemsSource="{Binding VideoDevices}"
                  SelectedItem="{Binding CurrentDevice}" />
        <Label Width="167"
               Height="24"
               Margin="10,0,0,46"
               HorizontalAlignment="Left"
               VerticalAlignment="Bottom"
               Content="Select video source" />
        <Button Width="67"
                Height="21"
                Margin="213,0,0,25"
                HorizontalAlignment="Left"
                VerticalAlignment="Bottom"
                Click="btnStart_Click"
                Content="Start" Background="Red" />
        <Button Width="67"
                Height="21"
                Margin="296,0,0,25"
                HorizontalAlignment="Left"
                VerticalAlignment="Bottom"
                Click="btnStop_Click"
                Content="Stop" />
    </Grid>
</Window>

二、this

this是值当前Window窗口类,该类包含了属性,比如背景颜色

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

包含了自定义的方法,比如:

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

包含了系统带的方法,比如:

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

三、sender

指的就是Button,包含了该控件的长度和高度。

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

四、e(重点讨论)

1、事件源,就是Button,也就是e.OriginalSource = Button。

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

2、wpf中,事件是会被路由转发的。在这个过程中,事件会经过一系列的控件。

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

展开RoutedEvent,你会发现,点击事件的信息传递,经过了一系列的控件:

WPF基础(七)WPF/C# 点击事件btnStart_Click(object sender, RoutedEventArgs e) :sender的本质,e的本质

五、总结

EventArgs 本质是什么?信息的传递过程,官网上也没有给出,苦逼啊。

https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.routedeventargs?redirectedfrom=MSDN&view=netframework-4.7.2

 

相关文章: