Vb.net Visual Studio将代码写入form1.vb而不是form1.designer.vb
由于某些原因,windows窗体设计器生成的任何代码都会写入my Form.vb类,而不是它所属的Form.designer.vb类。我希望你能帮我找出原因 我删除了尽可能多的代码,并能够通过以下设置重现问题:Vb.net Visual Studio将代码写入form1.vb而不是form1.designer.vb,vb.net,winforms,visual-studio-2013,designer,Vb.net,Winforms,Visual Studio 2013,Designer,由于某些原因,windows窗体设计器生成的任何代码都会写入my Form.vb类,而不是它所属的Form.designer.vb类。我希望你能帮我找出原因 我删除了尽可能多的代码,并能够通过以下设置重现问题: Namespace MyNamespace public class Form Inherits System.Windows.Forms.Form End Namespace 这实际上是我表单中剩下的所有代码——没有方法/函数/成员。当我删除名称空间声明时,代码再次在Form
Namespace MyNamespace
public class Form
Inherits System.Windows.Forms.Form
End Namespace
这实际上是我表单中剩下的所有代码——没有方法/函数/成员。当我删除名称空间声明时,代码再次在Form1.designer.vb文件中生成
为什么名称空间会干扰Visual Studio的功能?将名称空间手动添加到designer.vb文件中目前可以正常工作。但是,我不确定visual studio在修改designer.vb代码时是否会在某些操作中删除它。我只是从头创建了一个新项目,以确保没有任何依赖项或设置干扰。我可以通过向自动生成的Form1类添加“Inherits System.Windows.Forms.Form”和任意名称空间声明来重现这种行为。另一句话:当我生成新类(不是表单)并手动从System.Windows.Forms.Form继承时,也会出现同样的问题。在这种情况下,不会生成designer.vb类,所有属于该类的代码都会写入我的mainclass。在这种情况下,我甚至不需要名称空间来获得这种行为。这使我假设Visual Studio在这两种情况下都无法找到对designer.vb的正确引用。执行此操作时,设计器会返回到旧的VS2002/3行为。回到不支持分部类的时候。类声明中缺少的Partial关键字是它的提示。不同文件中类的所有部分的命名空间必须相同,以便该类实际上被视为同一个类。如果在一个文件中更改名称空间,则还必须在构成该类的所有其他文件(也在设计器文件中)中更改名称空间。设计师不会自动完成这项工作。否则,设计器文件中的类与另一个文件中的类构成不同的类。这就是为什么设计器在主文件中生成代码,因为另一个文件不再与之关联。