任何人都可以帮我回答我的问题,我们如何在Designer中为动态生成的组件实现点击事件。
我在
中使用了以下代码段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中构建的自定义表单。我怎样才能做到这一点?
答案 0 :(得分:-1)
您只需将UserControl转换为MyLabel:
var lbl1 = (MyLabel)surface.CreateControl(typeof(MyLabel), new Size(300, 20), new Point(10, 80));
因此,它不会通过构造函数创建对象。 您应该通过构造函数创建一个对象,然后添加到您的" surface"对象
MyLabel label1 = new MyLabel();
label1.DoubleClick += new EventHandler(MyLabel_Click);
surface.Controls.Add(label1);
}
void MyLabel_Click(object sender, EventArgs e)
{
MessageBox.Show("Clicked");
}
希望这有帮助。