2014-12-03 50 views
1

出于某种原因由Windows窗体设计器生成的任何代码写入到我Form.vb类,而不是给它所属的Form.designer.vb类。我希望你能帮我弄清楚是什么原因造成的。Visual Studio中编写代码到Form1.vb的,而不是form1.designer.vb

我删除的代码量可能,并能重现该问题有以下设置:

Namespace MyNamespace 
public class Form 
    Inherits System.Windows.Forms.Form 
End Namespace 

这实际上是所有在我的形式留下的代码 - 没有方法/函数/成员。当我删除名称空间声明时,再次在Form1.designer.vb文件中生成代码。

为什么命名空间与Visual Studio的功能造成干扰?

+0

我刚刚创建了一个新的项目从无到有,以确保我没有任何依赖关系或设置干扰。我可以通过向自动生成的Form1类添加“Inherits System.Windows.Forms.Form”和任意名称空间声明来重现此行为。 – 2014-12-03 10:58:38

+0

另一句话:当我生成一个新的类(而不是形式),并从System.Windows.Forms.Form中继承手动发生同样的问题。在这种情况下,不会生成designer.vb类,并且所有属于该类的代码都将写入我的mainclass。在这种情况下,我甚至不需要命名空间来获得这种行为。这让我认为尽管Visual Studio在两种情况下都无法找到对designer.vb的适当引用。 – 2014-12-03 11:27:21

+2

当您这样做时,设计师会回到传统的VS2002/3行为。当部分类尚未得到支持时返回。类声明中丢失的* Partial *关键字是它的提示。 – 2014-12-03 12:51:24

回答

0

手动添加命名空间到designer.vb文件适用于现在。但是我不确定visual studio是否可以在designer.vb代码被修改的某些操作中删除它。

+0

在不同的文件类的所有部分的命名空间必须是相同的,所以该类实际上被认为是同一类。如果在一个文件中更改名称空间,则还必须在组成该类的所有其他文件(也在Designer文件中)中更改它。设计师不会自动执行此操作。否则,设计器文件中的类将构成与另一个文件中的类不同的类。这就是设计师在主文件中生成代码的原因,因为另一个不再与其关联。 – 2017-04-19 10:58:23

相关问题