簡體   English   中英

在設計圖面中將事件用於TextBox,Label和Button控件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM