国家  china

C1SplitButton C1Button的DoubleClick&MouseDoubleClick添加

概述

之前我们的用户在设计过程中发现,对于我们目前的C1SplitButton和C1Button无法触发DoubleClick事件和MouseDoubleClick事件,虽然在控件中我们有这样的设计的声明和实现,但是调用后无法触发,这使得我们陷入一种莫名迷茫,细心的用户发现,像这两种事件(甚至还有其他的事件,目前只说这两种)在属性编辑器中找不到,我们只能通过代码来调用,如下代码:

        mySplit.DoubleClick += MySplit_DoubleClick;
        mySplit.MouseDoubleClick += MySplit_MouseDoubleClick;

        private void MySplit_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show("MouseDoubleClick");
        }

        private void MySplit_DoubleClick(object sender, EventArgs e)
        {
            MessageBox.Show("DoubleClick");
        }

但是,不能有效的触发,后来我们翻阅MS的文档后发现,解释文档

By default, the F:System.Windows.Forms.ControlStyles.StandardClick and F:System.Windows.Forms.ControlStyles.StandardDoubleClick style bits are set to false for the T:System.Windows.Forms.Button control, and the E:System.Windows.Forms.Button.DoubleClick event is not raised.

大体的意思就是,在默认情况下System.Windows.Forms.ControlStyles.StandardClick and F:System.Windows.Forms.ControlStyles.StandardDoubleClick 的样式对于Button设置成false.所以导致DoubleClick未被触发,所以知道了原因我们也就可以对症下药,

首先

我们新建一个Class,让它集成C1SplitButton,然后在构造函数中完成Style的设置,如下代码

    public class MySplit : C1SplitButton
    {
        public MySplit() : base()
        {
            SetStyle(ControlStyles.StandardClick | ControlStyles.StandardDoubleClick, true);
        }
    }

然后

我们通过代码来调用C1SplitButton的DoubleClick事件和MouseDoubleClick事件

        public Form1()
        {
            InitializeComponent();
            MySplit mySplit = new MySplit();
       
            mySplit.DoubleClick += MySplit_DoubleClick;
            mySplit.MouseDoubleClick += MySplit_MouseDoubleClick;
            mySplit.Location = new Point(10, 10);
            mySplit.Name= "mySplit";
            mySplit.Text = "mySplit1";
            this.Controls.Add(mySplit);

            //…
        }

        private void MySplit_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            MessageBox.Show("MouseDoubleClick");
        }

        private void MySplit_DoubleClick(object sender, EventArgs e)
        {
            MessageBox.Show("DoubleClick");
        }

最后

我们编译工程,就可以得到我们要想要的结果了。对于C1Button也是一样的调用方式。

imageimage

如果你有疑问,可以到GCDN获得技术支持:

http://gcdn.gcpowertools.com.cn/showforum-68.html

GCDNhttp://gcdn.gcpowertools.com.cn/

官方网站http://www.gcpowertools.com.cn/

转载声明:
欢迎将本站文章进行转载、演绎或用于商业目的,转载时请注明以下信息
文章转自:葡萄城控件产品博客,http://blog.gcpowertools.com.cn
原文地址:http://blog.gcpowertools.com.cn/post/C1SplitButton-C1Button-DoubleClickMouseDoubleClick.aspx

不允许评论