[英]Using Events for TextBox, Label, Button Control inside Design Surface
任何人都可以帮助我回答有关如何在Designer中为动态生成的组件实现click事件的问题。
我已经提到了DesignSurface(扩展)类,DesignSurfaceManager(扩展)类和表单设计器演示一起回来了! [^]网站
我在下面的摘要中使用了
class MenuCommandServiceExt:IMenuCommandService
课,但没有成功。
if ((string)menuItem.Tag == "Label")
{
var lbl1 = (Label)surface.CreateControl(typeof(Label),
new Size(300, 20), new Point(10, 80));
this.lbl1.Text = "Hello World by DesignSurfaceExt";
this.lbl1.Click += new EventHandler(btnclick_Click);
this.lbl1.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.lbl_MouseDoubleClick);
}
我还试图通过为Label创建一个带有标签内定义的所有事件的用户控件,并通过上述代码段创建它来实现此目的,但是它也没有起作用。 以下是我用于用户控制的逻辑。
if ((string)menuItem.Tag == "Label")
{
var lbl1 = (MyLabel)surface.CreateControl(typeof(MyLabel),
new Size(300, 20), new Point(10, 80));
}
用户控制
public class MyLabel : Label
{
public MyLabel()
{
this.DoubleClick += new EventHandler(MyLabel_Click);
}
void MyLabel_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked");
}
.........
.....
...
}
另外,我想保存/查看我在Powerful DesignSurface Designer中内置的自定义表单。 我该如何实现?
您只需将UserControl强制键入MyLabel:
var lbl1 = (MyLabel)surface.CreateControl(typeof(MyLabel), new Size(300, 20), new Point(10, 80));
因此,它不会通过构造函数创建对象。 您应该通过构造函数创建一个对象,然后将其添加到“表面”对象中。
MyLabel label1 = new MyLabel();
label1.DoubleClick += new EventHandler(MyLabel_Click);
surface.Controls.Add(label1);
}
void MyLabel_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked");
}
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.