最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

C#事件sender的小用法

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

一、什么是sender

sender最常見(jiàn)到的情況就是下圖參數(shù)列表中的這個(gè)了…可能平時(shí)沒(méi)多少注意。

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

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

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

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

二、小用法

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

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

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

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

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 被點(diǎn)擊了");
            }
            else
            {
                MessageBox.Show("Btn2 被點(diǎn)擊了");
            }
        }
    }
}

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

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

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

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

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

相關(guān)文章

  • C#實(shí)現(xiàn)繪制浮雕圖片效果實(shí)例

    C#實(shí)現(xiàn)繪制浮雕圖片效果實(shí)例

    這篇文章主要介紹了C#實(shí)現(xiàn)繪制浮雕圖片效果實(shí)例,是C#程序設(shè)計(jì)中非常實(shí)用的一個(gè)功能,需要的朋友可以參考下
    2014-08-08
  • C#實(shí)現(xiàn)websocket雙向通信的示例代碼

    C#實(shí)現(xiàn)websocket雙向通信的示例代碼

    本文基于WebSocketSharp實(shí)現(xiàn)了websocket雙向通信,除基本的客戶端向服務(wù)端發(fā)送消息外,也支持客戶端向指定的客戶端發(fā)送消息、群發(fā)消息,其他協(xié)議可自定義,廢話不多說(shuō),直接上干貨,需要的朋友可以參考下
    2024-06-06
  • C#編寫(xiě)的生辰八字計(jì)算程序

    C#編寫(xiě)的生辰八字計(jì)算程序

    這篇文章主要介紹了C#編寫(xiě)的生辰八字計(jì)算程序,假設(shè)一個(gè)人的公歷出生時(shí)間,范圍必須要在2012-2015年之間,因?yàn)楸臼纠绦蛑惶峁┝诉@幾年的農(nóng)歷數(shù)據(jù),小伙伴們參考下,可以自由擴(kuò)展
    2015-03-03
  • Unity常用音頻操作類示例代碼

    Unity常用音頻操作類示例代碼

    這篇文章主要介紹了Unity常用音頻操作類,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-07-07
  • 基于WPF實(shí)現(xiàn)PDF的顯示與轉(zhuǎn)換

    基于WPF實(shí)現(xiàn)PDF的顯示與轉(zhuǎn)換

    這篇文章為大家詳細(xì)主要介紹了如何基于WPF實(shí)現(xiàn)PDF的顯示并轉(zhuǎn)換成圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C#檢測(cè)是否有危險(xiǎn)字符的SQL字符串過(guò)濾方法

    C#檢測(cè)是否有危險(xiǎn)字符的SQL字符串過(guò)濾方法

    這篇文章主要介紹了C#檢測(cè)是否有危險(xiǎn)字符的SQL字符串過(guò)濾方法,功能非常實(shí)用,對(duì)于程序設(shè)計(jì)的安全來(lái)說(shuō)至關(guān)重要!需要的朋友可以參考下
    2014-07-07
  • C#控制臺(tái)程序的開(kāi)發(fā)與打包為一個(gè)exe文件實(shí)例詳解

    C#控制臺(tái)程序的開(kāi)發(fā)與打包為一個(gè)exe文件實(shí)例詳解

    所謂控制臺(tái)程序,就是沒(méi)有界面,運(yùn)行程序后只有一個(gè)黑色的類似cmd窗口,通過(guò)這個(gè)窗口進(jìn)行交互,下面這篇文章主要給大家介紹了關(guān)于C#控制臺(tái)程序的開(kāi)發(fā)與打包為一個(gè)exe文件的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • C#仿QQ實(shí)現(xiàn)簡(jiǎn)單的截圖功能

    C#仿QQ實(shí)現(xiàn)簡(jiǎn)單的截圖功能

    這篇文章主要為大家詳細(xì)介紹了如何利用C#語(yǔ)言模擬QQ實(shí)現(xiàn)屏幕選擇區(qū)域截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-08-08
  • WPF實(shí)現(xiàn)鐘表效果

    WPF實(shí)現(xiàn)鐘表效果

    這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)鐘表效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C#面向?qū)ο筇卣鞯木唧w實(shí)現(xiàn)及作用詳解

    C#面向?qū)ο筇卣鞯木唧w實(shí)現(xiàn)及作用詳解

    所有的面相對(duì)象思想,歸根結(jié)底是為了簡(jiǎn)化代碼,減少代碼量,構(gòu)建更符合現(xiàn)實(shí)生活邏輯的程序代碼,從而減輕程序員的負(fù)擔(dān)。不能一味地或者說(shuō)刻意地去使用面相對(duì)象的思想而忽略了程序所實(shí)現(xiàn)的功能或者框架,要根據(jù)實(shí)際情況
    2013-10-10

最新評(píng)論

清水河县| 永嘉县| 罗定市| 义马市| 彭阳县| 府谷县| 鄢陵县| 白银市| 阜新市| 高青县| 榕江县| 柏乡县| 方山县| 玉山县| 西畴县| 新晃| 五常市| 吉安县| 乳山市| 新宁县| 青神县| 普格县| 金昌市| 德州市| 呼图壁县| 保定市| 上蔡县| 栾川县| 盐池县| 临安市| 临城县| 江山市| 秦皇岛市| 永年县| 巴塘县| 郁南县| 碌曲县| 始兴县| 甘南县| 洛扎县| 民县|