C# 入门一一事件(event)的应用:如何在TextBox控件中实时显示Log

上一章节我们介绍了事件(event)的相关用法,那么我们利用所学知识,实现在TextBox控件中实时显示Log的一个功能。

同样,针对事件,我们需要明确事件的两类角色:

1.事件发布者:是指触发事件的对象,本例中,Log每写一行数据便触发相应事件

2.事件订阅者:是指捕获事件并作出相应处理,本例中,捕获到Log每次写入一行这个事件,作出实时在TextBox控件中显示的处理

接下来,我们按照事件使用的相关步骤:

一、定义事件

public event EventHandler<LogEventArgs> LogEvent;
public class LogEventArgs : EventArgs
{
	public string Message
	{
		set;
		get;
	}
}

二、添加事件处理函数(由事件订阅者提供,即TextBox所在部分)

注意:事件处理函数的定义需要与委托的定义保持一致,即其参数个数、参数类型和返回类型等需要与委托相同。

此处为EventHandler<LogEventArgs>,所以其定义与委托保持一致,如下:

private void ShowLog( object sender, LogEventArgs msg )
{
	//if( this.InvokeRequired )
	{
		BeginInvoke( new AddLogDelegate( RichTextBoxAddLine ), msg.Message );
	}
}
private void RichTextBoxAddLine( string msg )
{
	this.RTBox_Log.AppendText( msg.TrimEnd( ) + "\n" );
}

三、事件绑定/取消

m_Loger.LogEvent += new EventHandler<LogEventArgs>( ShowLog );

四、事件触发(由事件发布者提供,即Log打印部分)

public virtual void WriteLine( string str_fmt, params object[ ] args )
{
	Monitor.Enter( this );
	try
	{
		LogEventArgs logArgs = new LogEventArgs( );
		logArgs.Message = GetTime( ) + string.Format( str_fmt, args );

		if( null != m_Log )
		{
			m_Log.WriteLine( logArgs.Message );
		}
		if( LogEvent != null )
		{
			LogEvent( this, logArgs );
		}
	}
	catch( Exception e )
	{
		Debug.WriteLine( e.Message );
	}
	finally
	{
		Monitor.Exit( this );
	} 
}

这样,通过调用,我们就可以实现在TextBox控件上实时显示Log信息了

m_Loger.WriteLine( "IP={0},Port={1}",strIP,iPort);

完整测试用例代码链接如下:

https://download.csdn.net/download/xuanyin235/11007263

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值