Winforms 创建新控件并将其动态添加到窗体
我使用以下代码创建了一个标签:Winforms 创建新控件并将其动态添加到窗体,winforms,c#-4.0,Winforms,C# 4.0,我使用以下代码创建了一个标签: public static System.Windows.Forms.PictureBox pc = new PictureBox(); public static System.Windows.Forms.Label la = new Label(); private void label2_Click(object sender, EventArgs e) { label2.Visible = false; pictureBox2.Hid
public static System.Windows.Forms.PictureBox pc = new PictureBox();
public static System.Windows.Forms.Label la = new Label();
private void label2_Click(object sender, EventArgs e)
{
label2.Visible = false;
pictureBox2.Hide();
Controls.Add(la);
la.Location = new Point(78, 191);
la.Size = new Size(72, 77);
la.Image = _2WaySMSGatewayApp.Properties.Resources.message;
}
我希望能够创建一个新标签,并在单击此标签时将其添加到表单中。如何执行此操作?您可以添加一个单击处理程序:
la.Click += new EventHandler(la_Click);
然后在处理程序中:
void la_Click(object sender, EventArgs e)
{
//add new label
}
编辑-注释的解释。您的代码如下所示:
public static System.Windows.Forms.PictureBox pc = new PictureBox();
public static System.Windows.Forms.Label la = new Label();
private void label2_Click(object sender, EventArgs e)
{
label2.Visible = false;
pictureBox2.Hide();
Controls.Add(la);
la.Location = new Point(78, 191);
la.Size = new Size(72, 77);
la.Image = _2WaySMSGatewayApp.Properties.Resources.message;
la.Click += new EventHandler(la_Click);
}
void la_Click(object sender, EventArgs e)
{
//the new label has been clicked
}
您已将标签设置为静态,其中只有一个。将同一标签添加到控件集合无效。您需要创建一个新的标签控件:
private int labelCount;
private void label2_Click(object sender, EventArgs e)
{
var la = new Label();
la.Size = new Size(72, 77);
la.Location = new Point(78, 191 + labelCount * (la.Height + 10));
la.Image = _2WaySMSGatewayApp.Properties.Resources.message;
la.Text = "Make it visible";
labelCount++;
la.Name = "label" + labelCount.ToString();
la.Click += new EventHandler(la_Click);
Controls.Add(la);
}
void la_Click(object sender, EventArgs e)
{
var la = (Label)sender;
// You could use the Name property
//...
}
这段代码的意图很难猜测,我只是写了一些有明显副作用的东西。sorry@keyboard。。我不明白你的代码!:(…您能详细说明一下吗?请尝试制作新标签(
la
)可点击?如果是这样,就像你添加位置、大小和图像
属性的方式一样,你可以添加事件
。我已经为标签添加了点击
事件,并将其链接到处理程序。我是初学者。。你的代码可能很好。
但我很难理解你!无论如何,谢谢。!:)我花时间理解了这段代码,但很好!。。这段代码写得非常好:)非常感谢。
private int labelCount;
private void label2_Click(object sender, EventArgs e)
{
var la = new Label();
la.Size = new Size(72, 77);
la.Location = new Point(78, 191 + labelCount * (la.Height + 10));
la.Image = _2WaySMSGatewayApp.Properties.Resources.message;
la.Text = "Make it visible";
labelCount++;
la.Name = "label" + labelCount.ToString();
la.Click += new EventHandler(la_Click);
Controls.Add(la);
}
void la_Click(object sender, EventArgs e)
{
var la = (Label)sender;
// You could use the Name property
//...
}