MonthCalendar(日历控件)扩展DoubleClick事件 - tom385

tom385 2021-08-09 原文


MonthCalendar(日历控件)扩展DoubleClick事件


C#初学并不是很难,学过C,学过JAVA就能很容易入门,但仅仅是入门而已!真正的较量是在开发过程中碰到的一些实际的问题,昨天在开发一个和日历控件(MonthCalendar)有关联的项目,本想使用DoubleClick事件使得控件关闭然后传值,就这么简单!可是发现微软既然没有提供MonthCalendar中DoubleClick事件,原因不知为何,但问题必须解决,没办法,只能亲手扩展了!
下面就与大家一起分享解决方法!其中参考国外网的一些代码!
首先需要新建一个自定义控件继承MonthCalendar

C#初学并不是很难,学过C,学过JAVA就能很容易入门,但仅仅是入门而已!真正的较量是在开发过程中碰到的一些实际的问题,昨天在开发一个和日历控件(MonthCalendar)有关联的项目,本想使用DoubleClick事件使得控件关闭然后传值,就这么简单!可是发现微软既然没有提供MonthCalendar中DoubleClick事件,原因不知为何,但问题必须解决,没办法,只能亲手扩展了!
下面就与大家一起分享解决方法!其中参考国外网的一些代码!
首先需要新建一个自定义控件继承MonthCalendar
其中重写几个重要的方法如OnMouseDown和OnDoubleClick方法即可

代码区域
    public partial class Cldar : MonthCalendar
    
{
        
private Point m_LastClickPosition;
        
private long m_LastClickTime;
        
private Boolean m_LastClickRaisedDoubleClick;

        
public Cldar()
        
{
            InitializeComponent();
        }


        
protected override void OnPaint(PaintEventArgs pe)
        
{
            
// TODO: Add custom paint code here

            
// Calling the base class OnPaint
            base.OnPaint(pe);
        }


        
/**//// <summary>
        
/// ModeChanged Event.
        
/// </summary>

        [Browsable(true)]
        [Category(
Basic_Event), Description(觸發MonthCalendar雙擊時的事件.)]
        
public event EventHandler DoubleClick;

        
protected override void OnDoubleClick(EventArgs e)
        
{
            DoubleClick(
this, e);
            
base.OnDoubleClick(e);
        }


        
bool IsInDoubleClickArea(Point Point1, Point Point2)
        
{
            
return Math.Abs(Point1.X  Point2.X) <= SystemInformation.DoubleClickSize.Width &&
            Math.Abs(Point1.Y 
 Point2.Y) <= SystemInformation.DoubleClickSize.Height;
        }


        
protected override void OnMouseDown(MouseEventArgs e)
        
{
            
if (e.Button == MouseButtons.Left)
            
{
                
if (!m_LastClickRaisedDoubleClick && System.DateTime.Now.Ticks  m_LastClickTime <= SystemInformation.DoubleClickTime * 10000 && IsInDoubleClickArea(m_LastClickPosition, Cursor.Position))
                
{
                    OnDoubleClick(EventArgs.Empty);
                    m_LastClickRaisedDoubleClick 
= true;
                }

                
else
                
{
                    m_LastClickRaisedDoubleClick 
= false;
                }

                m_LastClickPosition 
= Cursor.Position;
                m_LastClickTime 
= System.DateTime.Now.Ticks;

            }

            
base.OnMouseDown(e);
        }

    }
发表于
2007-08-23 08:47 
tom385 
阅读(1409
评论(2
编辑 
收藏 
举报

 

版权声明:本文为tom385原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tom385/archive/2007/08/23/866227.html

MonthCalendar(日历控件)扩展DoubleClick事件 - tom385的更多相关文章

  1. 关于windows服务器的Security安全类日志的导出 – 520_1351

    对于windows服务器,日志的分类会有很多,可以通过wevtutil el 列出 有时可能会对Securit […]...

  2. Docker学习-Kubernetes – 集群部署

      Docker学习 Docker学习-VMware Workstation 本地多台虚拟机互通,主机网络互通 […]...

  3. 如何编写高质量的 JS 函数(2) — 命名/注释/鲁棒篇

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/sd2 […]...

  4. sublime sublimecodeintel配置 python – xzj19870125

    sublime sublimecodeintel配置 python 参照https://www.cnblogs […]...

  5. 开源中国上一些有用的开源系统 – 小小飞鹰

    董事长CEO Open Source ERPhttp://www.oschina.net/p/ceoerp董事 […]...

  6. Tomcat报java.io.IOException: Broken pipe错误 – 我是一棵树

    Tomcat报java.io.IOException: Broken pipe错误 Tomcat报java.i […]...

  7. ARCGIS(shp,gdb,mdb)批量转换CAD – gisoracle

    View Post ARCGIS(shp,gdb,mdb)批量转换CAD 可以把一个目录含子目录下所有shp、 […]...

  8. HTML5期末大作业:网站——响应式网络游戏官网HTML+CSS+JavaScript ~ 学生HTML个人网页作业作品下载 ~ web课程设计网页规划与设计 ~大学生个人网站作业模板 ~简单个人网页

    HTML5期末大作业:网站——响应式网络游戏官网HTML+CSS+JavaScript ~ 学生HTML个人网 […]...

随机推荐

  1. (转)科研牛人告诉研究生怎么看文献,怎么写论文

    (转)科研牛人告诉研究生怎么看文献,怎么写论文 2013-09-24 11:40  chloe_zhou  阅 […]...

  2. mysql左连接右连接(查询两张表不同的数据)

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 ;right join(右联 […]...

  3. 在Mysql中如何显示所有用户?

    这是一个mysql初学者经常问到的一个问题,今天我们就带大家看看是如何在Mysql中显示所有用户的。通常我们在 […]...

  4. 传感器课程设计之温湿度传感器

    前言   温度传感器:使用MF58热敏电阻,非线性,直流电桥测电压,经过放大电路输出电压。   湿度传感器:H […]...

  5. SpringMVC_url-pattern的写法

    # 1 设置为 .do 一种较为常见的写法 <servlet-mapping> <servl […]...

  6. win10系统下安装Linux虚拟机以及在虚拟机上安装Ubuntu – 机器学习小天才

    win10系统下安装Linux虚拟机以及在虚拟机上安装Ubuntu 一.前期准备工作 1.成功安装完成VMwa […]...

  7. 二叉树解决俄罗斯套娃的尝试

    给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i […]...

  8. \\ddd和\\xddd 转义序列

    转自  http://blog.csdn.net/todd911/article/details/885147 […]...

展开目录

目录导航