部分类并双击控件

时间:2012-08-29 20:10:04

标签: c# visual-studio-2010 class partial

如果我在部分类中有一个函数(假设我有'Button 2'点击处理程序)然后双击表单设计器中的'Button 2',Intellisense(或现在的任何负责人)总是抛出我来到'Form1.cs模块'(在一个不明确的或空行),而不是新的部分类模块'Button2.cs'。双击“Button1”会执行“正确”操作。

例如:

在'Form1.cs'中:

namespace test01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button 1 pressed");
        }

    }
}

在'Button2.cs'(公共部分类)中:

namespace test01
{
    public partial class Form1 : Form
    {


        private void button2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Button 2 pressed");
        }
    }
}

这是我在VS2008中看到的,现在在VS2010中,并没有明显的方法(对我而言)来解决它。

有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

那是因为你正在设计表单,而不是按钮。设计人员希望(按照惯例)表单上控件的所有事件处理程序都位于表单的源代码中,而不是按钮的源代码。当您考虑(通常)button2.cs可能应该定义名为button2时,这是有道理的,而不是名称属性恰好是“{1}}的实例”按钮2" 。

编辑:

部分类是为了一个非常特定的目的而设计的 - 当一个类由设计者或其他代码生成器生成时,开发人员手动编辑该类通常是不安全的(因为代码生成器将在稍后出现并覆盖该文件,包括开发人员的手写部分)。部分类允许将类拆分为两个文件 - 一个生成(在本例中由设计者生成),一个用于手写代码。因为类被定义为“部分”,所以编译器知道可以在其他文件中定义类的其他部分。

对于具有您所描述的几个不同功能区域的项目,我会将这些功能组织到与UI无关的类中(以便功能可以独立地进行单元测试),然后从UI类中调用它们需要。您应该查看Model-View-ControllerModel-View-ViewModel设计模式等概念,以了解其工作原理。

像这样的文件夹结构作为起点并不合理:

Button