我想在按下特定标签时为标签添加一个事件,但是我的事件处理程序对单击的标签没有反应。
我创建了一个日历,所以当我单击一个日期时,我想突出显示该日期,这是必需的。
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;
}
答案 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;
}