C1SplitButton C1Button的DoubleClick&MouseDoubleClick添加

发布时间:2017/09/29 00:09 发布者:jeffryli

返回博客中心

概述

之前我们的用户在设计过程中发现,对于我们目前的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.grapecity.com.cn/showforum-68.html

GCDNhttp://gcdn.grapecity.com.cn/

官方网站/developer


关于葡萄城

赋能开发者!葡萄城是专业的集开发工具、商业智能解决方案、低代码开发平台于一身的软件和服务提供商,为超过 75% 的全球财富 500 强企业提供服务。葡萄城专注控件软件领域30年,希望通过模块化的开发控件、灵活的低代码应用开发平台等一系列开发工具、解决方案和服务,帮助开发者快速响应复杂多变的业务需求,最大程度地发挥开发者的才智和潜能,让开发者的 IT 人生更从容更美好。

了解详情,请访问葡萄城官网