WinForm实现鼠标悬停显示控件
2015-06-16 17:14
330 查看
WinForm实现鼠标悬停显示控件
在某些需频繁操作的环节中,为提高效率、减少劳动,可以在操作细节上下功夫,以带来更好的用户体验。
今天介绍的鼠标悬停显示功能就是一例,看似仅仅节省了一次点击,实则在繁复操作中能够为用户节约很多体力,提高舒适度。
本例中的基本需求是:
鼠标移入设置区域后,直接弹出详尽设置内容,并当进行了设置或鼠标移出弹出的设置区域后,自动关闭弹出的设置区域。
在这里,我设计了5个按钮,以及一个日历控件,该日历控件就作为我们的详细设置内容,将其Visible属性设为False以隐藏。
为5个按钮同时注册MouseEnter事件:
编写MouseEnter事件处理函数:
代码中首先将日历控件的坐标设为与触发事件的按钮位置相同,然后显示日历控件,并将其发送到界面最前端以确保不被遮挡,最后将其Tag属性赋值为触发该事件的按钮,以方便后面事件中引用。
(PS:控件的Tag属性一直没弄明白正经是干嘛用的,所以一直都用来随便装东西以方便传递^^)
随后为日历控件分别增加如下两个事件处理函数:
功能很简单,就不累述了。
测试运行情况:
在某些需频繁操作的环节中,为提高效率、减少劳动,可以在操作细节上下功夫,以带来更好的用户体验。
今天介绍的鼠标悬停显示功能就是一例,看似仅仅节省了一次点击,实则在繁复操作中能够为用户节约很多体力,提高舒适度。
本例中的基本需求是:
鼠标移入设置区域后,直接弹出详尽设置内容,并当进行了设置或鼠标移出弹出的设置区域后,自动关闭弹出的设置区域。
在这里,我设计了5个按钮,以及一个日历控件,该日历控件就作为我们的详细设置内容,将其Visible属性设为False以隐藏。
为5个按钮同时注册MouseEnter事件:
编写MouseEnter事件处理函数:
private void button1_MouseEnter(object sender, EventArgs e) { monthCalendar1.Location = (sender as Control).Location; monthCalendar1.Show(); monthCalendar1.BringToFront(); monthCalendar1.Tag = sender; }
代码中首先将日历控件的坐标设为与触发事件的按钮位置相同,然后显示日历控件,并将其发送到界面最前端以确保不被遮挡,最后将其Tag属性赋值为触发该事件的按钮,以方便后面事件中引用。
(PS:控件的Tag属性一直没弄明白正经是干嘛用的,所以一直都用来随便装东西以方便传递^^)
随后为日历控件分别增加如下两个事件处理函数:
private void monthCalendar1_MouseLeave(object sender, EventArgs e) { monthCalendar1.Hide(); } private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e) { (monthCalendar1.Tag as Control).Text = e.Start.ToShortDateString(); monthCalendar1.Hide(); }
功能很简单,就不累述了。
测试运行情况:
相关文章推荐
- proto文件格式
- 第八章习题汇总
- Hadoop安装配置(棒极了,每一小步都写得非常清楚)
- GC微调实践
- 算法
- NGUI在secene中看不到
- Theano2.1.7-基础知识之设置的配置和编译模式
- FireDAC 下的 Sqlite [10] - 使用 R-Tree 搜索
- FFmpeg的HEVC解码器源代码简单分析:CTU解码(CTU Decode)部分-TU
- poj2578---三个数中找出第一个大于168的
- Theano2.1.7-基础知识之设置的配置和编译模式
- 让程序员跳槽的非钱原因
- weblogic 建域或启动慢的解决方法
- spring-boot 加载本地静态资源文件路径配置
- Yii2:推荐一个方法arrayHelper::map()
- js中(function(){…})()立即执行函数写法理解
- Ubiquitous Religions
- PYWIN32 + WMI模块:获取WINDOWS系统基本信息
- FireDAC 下的 Sqlite [9] - 关于排序
- 一个程序员工作一年来收藏的网站 .