自定义控件的相关操作,长按按钮操作
来源:互联网 发布:手机上怎么修改mac地址 编辑:程序博客网 时间:2024/06/05 02:26
描述:创建一个自定义控件名为“Long Push Button”,控件中含有一个按钮,一个进度条。在自定义控件中添加“xActivateTime”属性,这个属性作为变量用于决定自定义控件中按钮需要长按多少秒,主窗口才会收到这个事件的触发。进度条用于展示当前的进度。
主体窗口的触发条件有两个,按钮按下时间超过规定的和鼠标up,也就是说当按钮按下的时间超过规定的,事件不会被触发,直到鼠标松开才会触发
实现这个功能需要用到以下几个自定义控件的操作:1. 添加自定义控件,并向自定义控件添加属性。2. 向自定义控件添加事件
1. 自定义控件的添加
在solution处右键——Add——User Control,写好控件名称点击确认即可添加成功
在弹出的窗口中,可以放置按钮和进度条(process bar)
2. 向自定义控件添加属性
进入到 Long_Push_Button类,在构造函数下的空白处右键——insert Snippey——visual C#——prop
更改弹出的代码,rebuild以后能够在调用自定义控件的Form中看到xActivateTime属性
_xActivateTime默认值设置为3,可以在属性窗口更改这个值
private short _xActivateTime = 3; public short xActivateTime { get { return _xActivateTime ;} set { _xActivateTime =value ;} }
3. 实现长按xActivateTime秒后,事件才开始发生
这里使用timer控件计时,所以在自定义控件中需要添加一个Timer控件
1)鼠标按下事件,初始化,计时开始,时间间隔设置0.1秒
private void btn_Action_MouseDown(object sender, MouseEventArgs e) { progressBar1.Maximum = Convert.ToInt32(_xActivateTime) * 100; progressBar1.Value = 0; count = 0; this.timer1.Interval = 100; this.timer1.Start(); }
2)鼠标放开事件,计时停止,判断时间是否到了,若到则触发UserControlBtnClicked(sender, new EventArgs())事件
private void btn_Action_MouseUp(object sender, MouseEventArgs e) { this.timer1.Stop(); if (progressBar1.Value == progressBar1.Maximum) { UserControlBtnClicked(sender, new EventArgs()); } else { UserControlMouseUp(sender, new EventArgs()); progressBar1.Value = 0; } }
3)计时器触发事件,让进度条的值不断增长
private void timer1_Tick(object sender, EventArgs e) { if (progressBar1.Value + count + 1 >= progressBar1.Maximum) { progressBar1.Value = progressBar1.Maximum; this.timer1.Stop(); count = 0; } else { count++; progressBar1.Value = count * 10; } }
4. 向自定义控件中添加事件
public delegate void BtnClickHandle(object sender, EventArgs e); public event BtnClickHandle UserControlBtnClicked; //声明事件 public delegate void MouseUpHandle(object sender, EventArgs e); public event MouseUpHandle UserControlMouseUp;
这里添加了两个自定义事件,一个用于长按时间满足要求主窗体触发的事件,另一个用于时间不足够的情况
此时,在主窗体点击自定义控件,在事件窗口就可以看到这两个事件了
分别双击这两个事件,在Form类中会添加两个方法
private void long_Push_Button1_UserControlBtnClicked(object sender, EventArgs e) { textBox1.Text = long_Push_Button1.xActivateTime + "Sec"; } private void long_Push_Button1_UserControlMouseUp(object sender, EventArgs e) { textBox1.Text = ""; }
时间满足,在Textbox中显示长按的秒数,若不满足则什么都不显示
5. 结果
阅读全文
0 0
- 自定义控件的相关操作,长按按钮操作
- 【iOS】自定义控件之长按按钮
- 在GridView控件中添加相关的操作字段/操作按钮
- select控件的相关操作
- Timer控件相关操作
- 自定义Imageview控件实现多种手势操作 (拖动、水平缩放、竖直缩放、等比例缩放、双击、长按)
- JQuery select控件的相关操作
- JQuery select控件的相关操作
- JQuery select控件的相关操作收集
- JQuery select控件的相关操作
- 关于MSHFlexGrid控件的相关操作
- ios开发分页控件的相关操作
- C# CHART控件的相关操作备忘
- 串的相关操作——自定义
- iOS动画 基本动画操作和长按控件抖动
- Android自定义AlertDialog的控件获取操作
- C# PropertyGrid控件的四个自定义操作
- 自定义控件-Canvas的绘制与操作
- angularjs select标签使用ng-repeat标签之后,ng-model无法更新问题解决
- Spring+mybatis 框架(配置文件、代码示例)
- layui的checkbox没有对齐
- Redis笔记
- native开发学习flexbox:不错的参考文档,看这一篇就够了
- 自定义控件的相关操作,长按按钮操作
- BZOJ1189: [HNOI2007]紧急疏散evacuate
- jsp中获取get请求过来的参数
- API接口安全性设计
- LeetCode 207 Course Schedule
- windows批处理网卡切换脚本
- 材质贴图规范
- dict 和set
- 职业规划-Python开发工程师