C#中事件问题
自己定义了一个用户界面叫做UserControl1
UserControl1里面有一个button 叫做btn1
如果在一个别的地方引用UserControl1那么默认情况下btn1对他来说是私有的,也就是无法操作btn1的属性。
我想在不改变btn1为共有的情况下,怎样才可以为btn1的click事件赋值呢?
也就是说我在做UserControl1的时候还不知道btn的Click事件是什么。
当另一个Frame里面使用了UserControl1,可以根据具体的情况确定Click事件该是什么,这个时候怎么给btn1的Click事件赋值呢?
说的有点混乱,希望各位能听懂,不管方法简单复杂,能实现就好,前提是不将btn1改成public C# 事件 公有私有 button
[解决办法]
UserControl中:
public delegate void ButtonClickEventHandler(object sender, EventArgs e);
private static readonly object button_Click = new object();
public event ButtonClickEventHandler ButtonClick
{
add
{
Events.AddHandler(button_Click, value);
}
remove
{
Events.RemoveHandler(button_Click, value);
}
}
外面调用:
userControl1.ButtonClick += new ButtonClickEventHandler(userControl_ButtonClick);
void userControl_ButtonClick(object sender, EventArgs e)
{
...
}
public enum LightEnum
{
红, 黄, 绿
}
public class LitEventArguments: EvetnArgs
{
public LightEnum Light;
}
public event EventHandler<LitEventArguments> Lit;
Lit(this, new LitEventArguments{ Light= 红});