如何在c#中将事件添加到硬编码表单中?

时间:2016-05-19 10:27:21

标签: c#

我尝试创建一个表单,根据数据库中的项目数创建按钮

我的 int count 等于我的数据库中的计数

我想在创建的标签上添加事件或功能,当我点击标签时,它会在MesssageBox中显示标签的名称 下面是我的代码,

int Count;
        List<Panel> pnl = new List<Panel>();
        List<Label> tasklevel = new List<Label>();
        List<Label> taskStatus = new List<Label>();
        List<Label> taskname = new List<Label>();
        List<PictureBox> image = new List<PictureBox>();


for (int i = 0; i < Count; i++)
        {
            Panel pan = new Panel();
            pan.Name = "panel" + i;
            pan.BackColor = Color.White;
            pan.Dock = DockStyle.Top;
            pan.Padding = new Padding(10, 0, 10, 10);
            pan.Height = 80;
            pnl.Add(pan);

            Label lbl = new Label()
            {
                Name = "lbl" + i,
                ForeColor = Color.Black,
                //Dock = DockStyle.Left,
                AutoSize = false,
                Width = 0,
                BackColor = Color.Silver,
                TextAlign = ContentAlignment.MiddleLeft,
                Padding = new Padding(10, 10, 10, 10),
                Text = "Designing",
            }; tasklevel.Add(lbl);

            Label lblname = new Label()
            {
                Name = "lblname" + i,
                ForeColor = Color.Black,
                Dock = DockStyle.Left,
                AutoSize = false,
                Width = 0,
                BackColor = Color.Gray,
                TextAlign = ContentAlignment.MiddleLeft,
                Padding = new Padding(10, 10, 10, 10),
                Text = "Designing",
            }; taskStatus.Add(lblname);

            Label tskname = new Label()
            {
                Name = "tskName" + i,
                ForeColor = Color.FromArgb(31, 31, 31),
                Font = new Font("Segoe UI", 11, FontStyle.Regular),
                Dock = DockStyle.Left,
                AutoSize = false,
                Width = 200,
                BackColor = Color.Gainsboro,
                TextAlign = ContentAlignment.MiddleCenter,
                Padding = new Padding(10, 10, 10, 10),
                Text = "Task Name",
            }; taskname.Add(tskname);

            PictureBox picBox = new PictureBox()
            {
                Name = "picBox" + i,
                Dock = DockStyle.Fill,
                AutoSize = false,
                Image = DreametryMIS.Properties.Resources.f1,
                SizeMode = PictureBoxSizeMode.StretchImage,
                BackColor = Color.FromArgb(240,240,240),
                Padding = new Padding(10, 10, 10, 10),
            }; image.Add(picBox);

            pan.Controls.Add(picBox);
            pan.Controls.Add(lblname);
            pan.Controls.Add(lbl);
            pan.Controls.Add(tskname);
            FlowPanel.Controls.Add(pan);
        }

我是c#的新人,我希望有人可以帮助我

3 个答案:

答案 0 :(得分:1)

实现这样的事件处理程序:

public void label_Clicked(object sender, EventArgs e)
{
    Label label = sender as Label;
    if (label == null) return;
    MessageBox.Show("Name: " + label.Name + " Text: " + label.Text);
}

您现在可以将此处理程序添加到标签的Click事件中,例如:

lblname.Click += label_Clicked;
tskname.Click += label_Clicked;

现在单击其中一个标签时,将调用方法label_Clicked,并将标签作为sender的参数。因此,通过将sender转换为Label,您可以轻松访问所点击标签的属性。

注意您不能像处理其他属性那样在标签对象初始化程序中添加处理程序,但需要在我显示的额外语句中执行此操作。

答案 1 :(得分:1)

你也可以:

lblname.Click += delegate { nameOfUrFunction (lblname) };

private void nameOfUrFunction (Label lbl)</code>
{

}

答案 2 :(得分:-1)

TableCell cel2 = new TableCell();
Label lbl2 = new Label();
lbl2.Text = s;
cel2.Controls.Add(lbl2);
tr.Cells.Add(cel2);
TableCell cel3 = new TableCell();
DropDownList ddlcountry = new DropDownList();
ddlcountry.ID = s;
cel3.Controls.Add(ddlcountry);
tr.Cells.Add(cel3);
table.Rows.Add(tr);
form1.Controls.Add(table);
DropDownList ddl1 = (DropDownList)form1.FindControl("CountryId");
DropDownList ddlstate = (DropDownList)form1.FindControl("StateId");
ddl1.AutoPostBack = true;
ddl1.SelectedIndexChanged += new EventHandler(ddl1_SelectedIndexChanged);
protected void ddl1_SelectedIndexChanged(object sender, EventArgs e)
{
}