回答 将主要形式拆分为较小的文件

加入
2月20日,2021年
消息
6
编程经验
1-3
大家好,

希望这个问题不是愚蠢的所以我们去.....
使用C#窗口表单主代码从

公共部分类Form1:表格

我一直将主代码文件分成单独的文件,这些文件仍将其编译为一个

公共部分类Form1

它有效,但似乎没有比其设置的任何其他视觉工作室,项目文件可以损坏。
我认为这是图形等其他问题的原因。从未奏效的atevalate。 Windows大小调整正在运行的程序不会改为它设置为的值。 INT16(短)转换/使用导致代码没有错误。 Pictupbox代码无法正常工作(无编译错误),直到它被移动到另一个位置,它的原始位置没有任何错误,现在是图形代码做同样的事情。

我谷化了这个问题,它没有结束如何拆分类,它不清楚如何拆分主表单。

使用公共部分类Form1拆分代码的错误是多么错误,以及正确的方式。

提前致谢
 
Solution
您可以在文档继承和实现的接口中看到合并后,您无需在每个文件中重复此信息,您可以在这些文件中传播它(例如,请参阅文章)。

不要尝试设计除默认文件之外的部分文件,或者设计师将尝试添加Designer代码两次,这将无法正常工作。如果例如,尝试将控件添加到额外的部分类,则设计者添加了InitialIzeComponent等冲突。
将添加的部分文件的文件名更改为form1.yournameHere.cs

这会停止附加到每个添加的部分文件的设计窗口的问题。
微软在那里智慧制作了所有添加的部分主代码......

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
以下是您想要做什么的文档: 部分类和方法 - C#编程指南

如果您想正确地进行,您需要阅读它的完成方式。

将同一类分离为不同文件在C ++中更常见。

A1.CS:
C#:
public partial class A1{}
A2.cs:
C#:
public partial class A1{}
注意文件名不相同,但类对象名称为相同。

文件应在同一名称空间中,并标记为部分。使用类对象的实例,您可以通过多个文件访问这两种方法。阅读上面的文档以获取更多信息,并避免在论坛上欣赏令人满意的魅力。
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
您可以在文档继承和实现的接口中看到合并后,您无需在每个文件中重复此信息,您可以在这些文件中传播它(例如,请参阅文章)。

不要尝试设计除默认文件之外的部分文件,或者设计师将尝试添加Designer代码两次,这将无法正常工作。如果例如,尝试将控件添加到额外的部分类,则设计者添加了InitialIzeComponent等冲突。
将添加的部分文件的文件名更改为form1.yournameHere.cs

这会停止附加到每个添加的部分文件的设计窗口的问题。
Microsoft在有智慧中取得了所有添加的部分主代码文件,没有通常的编辑器支持,所有文本都依靠白色,所以它只是存储了完成的代码并编译,如果发现它需要一个编辑,只需切割并粘贴您需要的任何东西,所以没有大问题。
这不是我所看到的。由于该类的所有部分的继承是合并的,因此可以为任何部件打开设计者,但它将是空的。

如果“子部分”将在像主类下显示的“子部分”是很好的"Form1.Designer.cs"Solution Explorer中的文件,打开设计器只会打开主要一个,但VS不支持。
存在延期 文件嵌套 至少可以在解决方案资源管理器中分组零件:
1614020241838.png.


代码编辑器与IntelliSense和Code Colors在我测试时正常工作。

我还测试了从默认用户代码类的移动事件处理程序到另一个,并且令人惊讶的设计者对此很好,例如,DOWBLECLICLICK默认事件处理程序在额外的部分文件中自动打开该方法。

请注意,我之前从未添加过额外的部分表单类文件,我刚刚完成了测试什么工作而不是。如果一个类变大,我首先将重构的东西重构给其他类,或者使用区域进行分组。
 
解决方案

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
标记为最佳答案。你在这个约翰的这个人走开了。很好地解释了。  (y)

问题 though; did you find having the partial declaration : public partial class A1 in both files caused a problem, because it shouldn't, as far as I understand it. I'm just trying to understand that bit in your answer. Ie :
不要尝试设计除默认文件之外的部分文件,或者设计师将尝试添加Designer代码两次,这将无法正常工作。
 

sh

众所周知的成员
加入
2018年9月5日
消息
1,982
编程经验
10+
只有其中一个文件应该具有构造函数/呼叫 InitializeComponent();
这两个文件都不需要这一点,并且我理解他们都需要在两个文件中使用相同的部分声明类名。仅调用Designer代码一次,只提供其中一个文件包含以下EX: InitializeComponent();
 

约翰

C#论坛主持人
工作人员
加入
2011年4月23日
消息
1,159
地点
挪威
编程经验
10+
可以为任何部分文件(由于类继承形式)打开设计器,但设计人员不会从默认文件中看到生成的代码,因此它打开一个空的设计者,如果您尝试使用它会做点什么在该文件中添加设计者生成的代码,其中与Designer生成的默认文件中的代码冲突。所以不要试图"design"额外的部分文件。正如我所说,如果VS只打开默认设计的表单,那将是很好的,因为您在设计视图中打开了任何部分类。
 
最佳 底部