[英]Handling the double-click event of a user control with many children controls
[英]Partial Classes and double-click on control
如果我在部分类中有一个函数(例如,我有“按钮2”单击处理程序),然后在窗体设计器中双击“按钮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中看到的,并且(对我而言)没有明显的解决方法。
有什么帮助吗?
那是因为您正在设计表单 ,而不是按钮。 设计人员希望(按照约定)您在窗体上控件的所有事件处理程序都位于窗体的源代码中,而不是按钮的源代码中。 当您考虑到(通常)button2.cs可能应该定义一个名为button2
的类时 ,而不是其Name属性恰好是“ Button2”的Button
类的实例时,这才有意义。
编辑:
部分类是为特定目的而设计的-当类是由设计人员或其他代码生成器生成的时,开发人员通常无法手动编辑该类(因为代码生成器稍后会覆盖文件,包括开发人员的手写部分)。 部分类允许将一个类划分为两个文件-一个生成(在这种情况下由设计人员生成),另一个则用于手写代码。 因为该类被定义为“部分”,所以编译器知道该类的其他部分可以在其他文件中定义。
对于具有您所描述的功能的几个不同领域的项目,我将它们组织到与UI无关的类中(以便可以对功能进行独立的单元测试),然后根据需要从UI类中调用它们。 您应该研究诸如Model-View-Controller或Model-View-ViewModel设计模式之类的概念,以了解其工作原理。
像这样的文件夹结构不会毫无道理:
Root
|-GUI // Contains folders related to GUI elements
| |-Forms // Contains your forms
| |-Controls // Contains any custom controls
|-Common // Contains folders for common functionality
| |-IO // Contains classes relating to I/O
| |-Diagnostics // Contains classes relating to diagnostics
|-Logic // Contains classes folders to specific business use cases
|-UseCase1 // Contains classes folders to use case #1 (use a better name, obviously)
|-UseCase2 // Contains classes folders to use case #2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.