繁体   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