我有一个动态添加UserControl
:不能提高一个用户控件的单击事件在C#
var listItem = new ListItem(/* arguments */);
listItem.Click += SetListItemColor;
panel.Controls.Add(listItem); // "panel" is FlowLayoutPanel
SetListItemColor:
private void SetListItemColor(object sender, EventArgs e)
{
var listItem = (ListItem)sender;
if (listItem.BackColor == Color.LightGray)
{
listItem.BackColor = Color.White;
}
else
{
listItem.BackColor = Color.LightGray;
}
}
没有改变颜色发生在我点击UserControl
。然而,对于测试的目的,我试图将事件更改为EnabledChanged
,改变Enabled
性质,颜色会改变:
var listItem = new ListItem(/* arguments */);
listItem.Enabled = false;
listItem.EnabledChanged += SetListItemColor;
listItem.Enabled = true;
panel.Controls.Add(listItem);
什么问题?
您应该添加委托和事件处理程序。尝试此链接: http://stackoverflow.com/questions/2920145/how-to-work-with-delegates-and-event-handler-for-user-control –
@VinhVu,感谢您花时间帮帮我。为什么我需要创建一个自定义事件,如果有一个内置的?特别是当其他事件**做**工作时。 – Sipo
我只是试过,它的工作原理。你是否将你的listItem对接到你的面板,以确保你实际上点击了UserControl而不是面板? –