展会信息港展会大全

c#自定义控件中事件的处理
来源:互联网   发布日期:2016-01-27 15:24:07   浏览:2039次  

导读:using System; using System Collections Generic; using System ComponentModel; using System Data; using System Drawing; using System Text; using System Windows Forms; namespace Client ...

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

namespace ClientControl

{

//1.定义委托

public delegate void NewsClickEventHandle(object sender,NewsEventArg args);

public partial class NewsStage : Control

{

//2.定义事件

public event NewsClickEventHandle NewsClicked;

private Graphics g;

private bool isMouseOn = false;

public NewsStage()

{

InitializeComponent();

//3.事件触发,这样少了事件注册,我们在其他窗体中引用控件时只需要注册事件和编辑事件处理程序即可,可以对比上一篇博客

this.Click += new EventHandler(NewsStage_Click);

this.MouseMove += new MouseEventHandler(NewsStage_MouseMove);

this.MouseLeave += new EventHandler(NewsStage_MouseLeave);

}

void NewsStage_MouseLeave(object sender, EventArgs e)

{

isMouseOn = false;

this.Invalidate();

}

void NewsStage_MouseMove(object sender, MouseEventArgs e)

{

isMouseOn = true;

this.Invalidate();

}

//新闻被点击事件触发方法

void NewsStage_Click(object sender, EventArgs e)

{

if (_NewsID>=0&&_NewsTitle!="")

{

NewsEventArg myArgs = new NewsEventArg(_NewsID,_NewsTitle);

NewsClicked(this, myArgs);

}

}

private int _NewsID = 0;

[Description("新闻ID"), Category("Appearance")]

public int NewsID

{

get { return _NewsID; }

set

{

_NewsID = value;

this.Invalidate();

}

}

/// <summary>

/// 新闻标题

/// </summary>

private string _NewsTitle = "";

[Description("新闻标题"), Category("Appearance")]

public string NewsTitle

{

get { return _NewsTitle; }

set

{

_NewsTitle = value;

this.Invalidate();

}

}

private Color _MouseOnColor = new Color();

[Description("鼠标划上的样色"), Category("Appearance")]

public Color MouseOnColor

{

get { return _MouseOnColor; }

set

{

_MouseOnColor = value;

}

}

protected override void OnPaint(PaintEventArgs pe)

{

base.OnPaint(pe);

g = this.CreateGraphics();

if (isMouseOn)

{

g.DrawString(_NewsTitle, this.Font, new SolidBrush(this._MouseOnColor), new PointF(0, 0));

}

else

{

g.DrawString(_NewsTitle, this.Font, new SolidBrush(this.ForeColor), new PointF(0, 0));

}

}

protected void Dispose()

{

g.Dispose();

}

}

public partial class NewsEventArg : EventArgs

{

public int NewsID = 0;

public string NewsTitle = "";

public NewsEventArg(int newsID,string newsTitle){

NewsID = newsID;

NewsTitle = newsTitle;

}

}

}

赞助本站

人工智能实验室

相关热词: 自定义控件 事件 c

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港