概述
之前我们的用户在设计过程中发现,对于我们目前的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也是一样的调用方式。
如果你有疑问,可以到GCDN获得技术支持:
http://gcdn.grapecity.com.cn/showforum-68.html
GCDN:http://gcdn.grapecity.com.cn/
官方网站:/developer