我想在按下特定标签时为标签添加事件,但是我的事件处理程序对单击的标签没有反应。

我创建了一个日历,因此单击日期时要突出显示该日期,这就是要求。

for (Int32 i = 1; i <= Dayz; i++)
{
    ndayz += 1;
    lblDayz = new Label();
    lblDayz.Text = i.ToString();
    lblDayz.Cursor = Cursors.Hand;
    lblDayz.Name = "Date" + i;
    lblDayz.Anchor = AnchorStyles.None;
    lblDayz.TextAlign = ContentAlignment.MiddleCenter;

    lblDayz.Click += lblDayz_Click;
}


事件处理程序如下所示:

public void lblDayz_Click(object sender, EventArgs e)
{
    lblDayz.BackColor = Color.FromArgb(176, 180, 43);
    lblDayz.ForeColor = Color.White;
}

最佳答案

您当前的实现尝试更改lblDayz的属性,该属性可能是某个地方的单个标签。但是,在创建标签的方式中,您会在代码中生成许多标签。每天一次

这意味着您需要您的处理程序对单击的标签做出反应。单击的标签是事件处理程序中的sender。粗暴的话你可以这样处理

public void lblDayz_Click(object sender, EventArgs e)
{
    Label clickedLabel = sender as Label;

    clickedLabel.BackColor = Color.FromArgb(176, 180, 43);
    clickedLabel.ForeColor = Color.White;
}

10-04 12:02