您的位置:首页 > 其它

按住不放可以在一定时间间隔内重复发生mouserDown事件的按钮。

2013-10-25 09:04 225 查看
按住不放可以在一定时间间隔内重复发送mouserDown事件的按钮。

源代码如下:

/// <summary>
/// 按住不放可以在一定时间间隔内重复发送mouserDown事件的按钮。
/// </summary>
public partial class ReapterButton:Button
{
#region Attributes

private Timer timer;
private MouseEventArgs meArgs;

#endregion

#region Properties

/// <summary>
/// 计时器初始延迟时间,按钮初次按下与重复事件之间间隔的毫秒数
/// </summary>
[DefaultValue(400)]
[Category("selfDefine")]
[Description("计时器初始延迟时间,按钮初次按下与重复事件之间间隔的毫秒数")]
public int InitDelay { get; set; }

/// <summary>
/// 重复事件之间的事件间隔,单位:毫秒
/// </summary>
[DefaultValue(400)]
[Category("selfDefine")]
[Description("重复事件之间的事件间隔,单位:毫秒")]
public int Intervals { get; set; }

#endregion

#region Construtor

public ReapterButton()
{
InitializeComponent();
timer = new Timer(components);
timer.Tick += new EventHandler(timer_Tick);
InitDelay = 400;
}

#endregion

#region Methods

/// <summary>
/// 一定事件间隔后重复触发mouserDown事件.如果事件是初次发生则在delay时间后发生
/// 以后每次迭代的时间间隔为Interva
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void timer_Tick(object sender, EventArgs e)
{
base.OnMouseDown(meArgs);
if (timer.Enabled)
{
timer.Interval = Intervals;
}
else
{
timer.Interval = InitDelay;
}
timer.Enabled = true;
}

/// <summary>
/// 引发计时器控件,并在Delay时间后初次引发mouserDown事件
/// </summary>
/// <param name="mevent"></param>
protected override void OnMouseDown(MouseEventArgs mevent)
{
meArgs = mevent;
base.OnMouseDown(mevent);
timer.Enabled = false;
timer_Tick(this, EventArgs.Empty);
}

/// <summary>
/// 使得计时器失效
/// </summary>
/// <param name="mevent"></param>
protected override void OnMouseUp(MouseEventArgs mevent)
{
base.OnMouseUp(mevent);
timer.Enabled = false;
}

#endregion
}


  

请大家正解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: