可以拆分 Visual Basic (.NET / 2010) 文件以提高可读性吗?

Posted

技术标签:

【中文标题】可以拆分 Visual Basic (.NET / 2010) 文件以提高可读性吗?【英文标题】:Can a Visual Basic (.NET / 2010) file be split up for readability? 【发布时间】:2011-05-02 12:09:31 【问题描述】:

我正在用 Visual Basic 2010 编写一个程序。它是一个 HMI(人机界面),因此有一整套按钮,可以将命令发送到其他设备。结果,有一大堆用于单击按钮的事件处理程序并不能真正分解成模块(除非我对模块的理解是错误的)。

基本上,我希望能够移动所有事件处理程序,例如,按钮按下到不同的文件。可以这样做还是它们留在“MainWindow.xaml.vb”中很重要? (我所有的按钮都位于一个全屏窗口中,有些按钮被选项卡隐藏)。

谢谢,

--埃里克·T

【问题讨论】:

如何以及何时将事物分解为模块是您会发现自己一次又一次地重新审视的事情。部分类将解决您的问题,但 IMO 这不是部分类的预期目的 - 部分类主要是添加的,因此以编程方式生成的代码可能位于不同的文件中。 【参考方案1】:

对于 UI 的模块化,您可以探索 here 中描述的 WPF/SL 的组合能力以及帮助和示例 here 。但它是一个非常不同的架构,如果你已经有很多代码,它可能是一个重大的重构。

对于按钮,您应该能够使用隐藏大部分事件处理程序的命令。阅读指挥here。

【讨论】:

我实际上是在使用 WPF,但我是在以 Windows 窗体的心态使用它。我主要切换到 WPF,因此我的应用程序可以轻松扩展到不同的屏幕分辨率。指挥看起来很迷人,观点的东西也可以帮助我。谢谢! @evilspoons : Youre welcome ! I agree that the transition from Windows Forms to MVVM is a big jump, but it really worth it. Try it on a small scale project, and youll 很快就会看到好处,如果你搜索 SO,你会发现大量关于 MVVM 的资源:)【参考方案2】:

您能否改为将一些功能分离到自定义控件中?甚至可能根据一些外部数据即时创建按钮?

【讨论】:

【参考方案3】:

我喜欢使用区域来隐藏代码 (代码荧光笔不会做这种事情,所以不宜使用图像)

请记住,这只是将代码隐藏在 VS 中,文件仍然完好无损,编译器将忽略 #Region#End Region

【讨论】:

我一直在使用区域,但是当您有一个 400 英尺长的页面,而您真的只想在 Visual Studio 的不同选项卡中拥有多个部分时,它们并没有真正的帮助。不过仍然是一个很好的提示。 啊,真的,这真的取决于我猜的人。【参考方案4】:

您可以使用Partial Classes 将您的类定义分解为多个文件,这可能有助于组织您的代码。

上面的链接将帮助准确解释如何使用部分类。以下链接将向您展示 VB.NET 语法(以及如何使用类设计器进行拆分):

How to: Split a Class into Partial Classes

【讨论】:

我应该能够像这样将我的代码的相当一部分迁移到一个单独的文件中。太棒了! FWIW,这行得通,但如果您通过部分类将事件处理程序移动到单独的文件,Visual Studio 2010 中的 XAML 设计器将无法再通过“属性”窗口为您提供到事件处理程序的便捷链接(它显示为空白,如果您双击它将创建一个新的空白事件处理程序......然后编译当然会抱怨多个相同的签名。)【参考方案5】:

如果需要,您可以使用Partial Classes 将它们拆分为单独的文件。

【讨论】:

【参考方案6】:

当然使用部分类。看看这篇文章,

http://visualbasic.about.com/od/usingvbnet/a/partclses.htm

【讨论】:

以上是关于可以拆分 Visual Basic (.NET / 2010) 文件以提高可读性吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Basic .NET 中反序列化 JSON

在Visual Basic.NET(VB.NET)中开发的ASP.NET Core应用程序,可以吗? VS

将电子表格 (OpenOffice) 导入 Visual Basic .net 组合框

为啥某些 Microsoft 语言被称为“视觉”? (Visual C#、Visual Basic .NET、Visual C++)

Visual Basic 语言的 Xmpp 库

用于 xp 平台程序的 visual basic .net 程序正在 Windows 7 上构建