如果我为处理程序订阅了一个新方法,请按" Tab" " + ="之后两次VS将实现一个像:
的Bodypublic class A {
public A(){
button1.Click += OnButton1Click();
}
private OnButton1Click(object sender, EventArgs e){
}
}
如何更改VS以将方法正文创建为公共而非私有?
亲切的问候, Asat0r
答案 0 :(得分:1)
如何更改VS以将方法正文创建为公共 私人?
不确定是否有任何选项,但为什么你想这样做?事件处理程序并不是public
。如果你想从其他类型调用处理程序内部的逻辑,那么将该逻辑重构为辅助方法并重新使用它。
答案 1 :(得分:0)
其他答案表明该方法不应公开。
从广义上讲,我拒绝这一点 - 至少没有进一步的理由。 如果您希望公开一个具有该签名的方法,我通常会继续这样做。尽管有两个警告:
这两种情况都可以通过公开一个具有所需参数的公共方法来解决(可能仍然是事件处理程序参数,但通常不会成为)然后使用lambda表达式订阅活动:
// I want to be able to call this from other code
public void SaveItem()
{
// ...
}
// Hook up the event handler using a lambda expression
saveButton.Click += (sender, args) => SaveItem();
另一方面,如果两个子弹点都不是问题,请继续手动公开方法。我不希望有VS快捷方式这样做,但只需指定public
修饰符就非常简单。