在Visual Studio中,如何在自动创建新的事件处理程序时将默认访问修饰符设置为private而不是protected?

时间:2010-07-20 18:41:54

标签: asp.net visual-studio

使用Visual Studio 2005/2008/2010在C#或VB中开发和使用ASP.NET应用程序(2003年不是问题),如果我通过双击设计器中的控件或选择控件来自动创建新方法代码编辑器下拉列表中的新方法(仅限VB),访问修饰符始终受保护而不是私有。这很烦人,因为我的开发人员每次都必须手动将方法更改为私有。

是否有办法告诉visual studio将所有新方法标题生成为私有而不是受保护?

请不要讨论希望我的方法变得私密的原因。

2 个答案:

答案 0 :(得分:2)

这对于双击设计器中的控件的情况不起作用。

双击设计器中的控件不仅会在代码中创建默认事件处理程序的代码,还会更改标记以引用它。例如,在网页上添加了一个按钮,然后双击它,我得到:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Yes" />

如果我将Button1_Click的可见性更改为“私人”,那么我会看到一个黄色的死亡屏幕:

  

编译器错误消息:CS1061:'ASP.default_aspx'不包含'Button1_Click'的定义,并且没有可以找到接受“ASP.default_aspx”类型的第一个参数的扩展方法'Button1_Click'(你是否错过了使用指令或程序集引用?)

解析并构建ASP.NET页面以生成从您的代码隐藏类派生的类。该类需要能够引用事件处理程序之类的东西。


显然,当与VB.NET一起使用时,此问题不存在。不同之处在于,在VB.NET中,设计器根本不会更改标记,因此从标记生成的类不需要引用创建的事件处理程序。它可以安全地成为私人。

但是,由于设计器在与C#一起使用时修改了标记,因此生成的类 需要引用新的事件处理程序。在这种情况下,事件处理程序不能变为私有。

答案 1 :(得分:1)

据我了解,这是一个设计师问题。一旦页面代码“成熟”或在我签到之前,我为“private”搜索并替换“protected”,然后修复任何导致的编译错误。

这是你的工作,为什么它会“烦人”? :O)