[英]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.