日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

事件发布的小程序

發布時間:2025/7/25 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 事件发布的小程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  CSharp中?事件基于委托 ,事件為委托提供了一種發布、訂閱的機制。本人為了熟悉事件的發布、訂閱機制 ,就寫了一個小程序來演示發布事件?和 訂閱事件。

/**********************************************
* 類 名 稱: DateTimeEventArgs
*
* 命名空間: Delegates
*
* 作 者: DreamDays
*
* 說 明: 定制自己的Eventargs,包含相關的時間信息
*
* 時 間:2012年04月08日
********************************************
*/
using System;

namespace Delegates
{
public class DateTimeEventArgs:EventArgs
{
private DateTime firstTime;
//第一個時間
public DateTime FirstTime
{
get { return firstTime; }
set { firstTime = value; }
}
private DateTime lastTime;
//第二個時間
public DateTime LastTime
{
get { return lastTime; }
set
{
lastTime = value;
//求時間差
Second = GetTimeSpace(FirstTime, LastTime);
}
}
private int second;
//時間差
public int Second
{
get { return second; }
set { second = value; }
}
//求兩個時間相差的秒
private int GetTimeSpace(DateTime fTime, DateTime lTime)
{
//求去掉毫秒的更好的方法^-^
DateTime newFTime = new DateTime(fTime.Year, fTime.Month, fTime.Day, fTime.Hour, fTime.Minute, fTime.Second);
DateTime newLTime = new DateTime(lTime.Year, lTime.Month, lTime.Day, lTime.Hour, lTime.Minute, lTime.Second);
TimeSpan tsLTime = new TimeSpan(newLTime.Ticks);
TimeSpan tsFTime = new TimeSpan(newFTime.Ticks);
TimeSpan tsTimeSpace = tsLTime.Subtract(tsFTime);
return tsTimeSpace.Seconds;
}
}
} using System;

namespace Delegates
{
public class Computer
{
/// <summary>
/// 定義一個事件,為外部提供一個訂閱
/// </summary>
public event EventHandler<DateTimeEventArgs> NewTimeSpace;
DateTimeEventArgs e;
//接收一個DateTime 并將DateTime保存在 e 中
public void NewTime(DateTime dt)
{
if (e == null||e.LastTime.Year >1)
{
e = new DateTimeEventArgs();
e.FirstTime = dt;
return;
}
e.LastTime = dt;
//如果被訂閱 ,就觸發事件
if (NewTimeSpace != null)
{
NewTimeSpace(this, e);
}
}
}
} using System;
using System.Windows.Forms;

namespace Delegates
{
public partial class FrmMain : Form
{
public FrmMain()
{
InitializeComponent();
}
//提供一個自己定義的事件
Computer computer = new Computer();

private void FrmMain_Load(object sender, EventArgs e)
{
//訂閱事件 ,如果觸發事件就執行方法 NewCarIsHere
computer.NewTimeSpace += this.NewCarIsHere;
}
//事件觸發后執行的方法
public void NewCarIsHere(object sender, DateTimeEventArgs e)
{
this.textBox1.AppendText(string.Format("{0} 到 {1} 相差 {2} 秒\r\n", e.FirstTime.ToString("yyyy年MM月dd日HH時mm分ss秒"), e.LastTime.ToString("yyyy年MM月dd日HH時mm分ss秒"), e.Second.ToString()));
}

private void btnAdd_Click(object sender, EventArgs e)
{
//向自定義事件的發布者提供時間參數 ,提供兩次時間就會觸發一次自定義的事件
computer.NewTime(DateTime.Now);
}
}
}

   下圖為運行效果:

轉載于:https://www.cnblogs.com/DreamDays/archive/2012/04/08/2437990.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的事件发布的小程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。