标签上的事件未更新单击的标签

时间:2019-06-06 08:39:07

标签: c#

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

我创建了一个日历,所以当我单击一个日期时,我想突出显示该日期,这是必需的。

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;
}

1 个答案:

答案 0 :(得分:2)

您当前的实现尝试更改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;
}