欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#事件中關(guān)于sender的用法解讀

 更新時間:2022年09月09日 11:24:14   作者:Rhine404  
這篇文章主要介紹了C#事件中關(guān)于sender的用法解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

C#事件sender的小用法

開WPF新坑了,看了WPF的炫酷界面,再看看winForm實在是有些慘不忍睹(逃)。后面會開始寫一些短的學(xué)習(xí)筆記。

一、什么是sender

sender最常見到的情況就是下圖參數(shù)列表中的這個了…可能平時沒多少注意。

private void Button_Click(object sender, RoutedEventArgs e)
{
    //……blahblahblah
}

sender我們很容易猜到肯定是例子中觸發(fā)單擊事件的那個button控件,它類型是object。C#里的繼承關(guān)系是所有類的基類,萬物基于object(滑稽),所以控件同樣也是繼承與object的,所以將sender進行類型轉(zhuǎn)換就能直接得到觸發(fā)事件的控件對象。

private void Button_Click(object sender, RoutedEventArgs e)
{
    Button btn = (Button)sender;
    btn.Content = "我被點擊了";
}

將sender 進行類型轉(zhuǎn)換后,就能夠直接對button1的屬性進行更改,所以 sender是當(dāng)前 觸發(fā)事件的控件。

二、小用法

知道了sender是什么后,我們就可以開始加以小小的應(yīng)用了。

我首先想到的就是,當(dāng)有多個控件需要觸發(fā)相同的事件時,使用sender來獲取當(dāng)前觸發(fā)事件的控件,可以在同一個方法中進行事件的響應(yīng),能夠使代碼的重用性提高,也能更簡潔

下面用一個小小的例子來解釋(當(dāng)然這個只是我暫時先想到的應(yīng)用)。

界面很簡單,按照以往的設(shè)計習(xí)慣,需要將兩個button的單擊事件分開來寫,彈出是誰被點擊的提示。而現(xiàn)在可以利用sender實現(xiàn)只用一個button_Click事件,就可以顯示是誰被點擊了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace WPFLittleTips
{
    /// 
    /// MainWindow.xaml 的交互邏輯
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void btnObj1_Click(object sender, RoutedEventArgs e)
        {
            Button btn = (Button)sender;
            if(btn == btnObj1)
            {
                MessageBox.Show("Btn1 被點擊了");
            }
            else
            {
                MessageBox.Show("Btn2 被點擊了");
            }
        }
    }
}

單擊后的效果應(yīng)該都能想到了,就不貼圖了。

應(yīng)該sender 的應(yīng)用還很多,突然發(fā)現(xiàn)以前都沒有注意到的小東西,利用起來還是很有用的。

C#事件中sender和e參數(shù)的理解

  • sender是事件源,表示觸發(fā)事件的那個組件,比如說你按下按鈕,那么sender就是按鈕
  • EventArgs是事件參數(shù),比如說你用鼠標(biāo)點擊窗體,那么EventArgs是會包含點擊的位置等等,它用來輔助你處理事件。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • WPF+WriteableBitmap實現(xiàn)高性能曲線圖的繪制

    WPF+WriteableBitmap實現(xiàn)高性能曲線圖的繪制

    這篇文章主要為大家詳細(xì)介紹了如何利用WPF+WriteableBitmap實現(xiàn)高性能曲線圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-08-08
  • OpenXml合并Table單元格代碼實例

    OpenXml合并Table單元格代碼實例

    在本篇文章里小編給大家整理了關(guān)于OpenXml合并Table單元格的相關(guān)實例詳解,需要的朋友們參考下。
    2019-08-08
  • C#實現(xiàn)六大設(shè)計原則之接口隔離原則

    C#實現(xiàn)六大設(shè)計原則之接口隔離原則

    這篇文章介紹了C#實現(xiàn)六大設(shè)計原則之接口隔離原則的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#網(wǎng)絡(luò)爬蟲代碼分享 C#簡單的爬取工具

    C#網(wǎng)絡(luò)爬蟲代碼分享 C#簡單的爬取工具

    這篇文章主要為大家詳細(xì)介紹了C#網(wǎng)絡(luò)爬蟲代碼,教大家如何制作了簡單的爬取工具,感興趣的小伙伴們可以參考一下
    2016-07-07
  • C# OpenVINO讀取百度模型實現(xiàn)印章檢測

    C# OpenVINO讀取百度模型實現(xiàn)印章檢測

    這篇文章主要為大家詳細(xì)介紹了C# OpenVINO如何通過直接讀取百度模型實現(xiàn)印章檢測,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C# winform循環(huán)播放多個視頻

    C# winform循環(huán)播放多個視頻

    這篇文章主要為大家詳細(xì)介紹了C# winform循環(huán)播放多個視頻的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • C# 實現(xiàn)抓包的實例代碼

    C# 實現(xiàn)抓包的實例代碼

    這篇文章主要介紹了C# 實現(xiàn)抓包的方法,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • C#集合之自定義集合類

    C#集合之自定義集合類

    這篇文章介紹了C#集合之自定義集合類,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(下)

    C# Dynamic之:ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用(下)

    本篇文章是對C#中ExpandoObject,DynamicObject,DynamicMetaOb的應(yīng)用進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 對int array進行排序的實例講解

    對int array進行排序的實例講解

    下面小編就為大家分享一篇對int array進行排序的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12

最新評論