【问题标题】:How do I Generate a Windows Form (from a programmatically created project)? [closed]如何生成 Windows 窗体(从以编程方式创建的项目)? [关闭]
【发布时间】:2015-07-14 13:01:56
【问题描述】:

首先要提一下,我不是在问如何创建 Windows 窗体。我有一个独特的情况,一个人决定以编程方式创建整个 Windows 窗体应用程序。我要问的是……

有什么方法可以逆向工作并生成设计器文件,或者我们可以从中直观地完成工作吗?

我们所拥有的是一个以编程方式创建的“Designer”文件...

有没有办法做到这一点?

史蒂夫

【问题讨论】:

  • 不清楚你在问什么。 “以编程方式创建整个 Windows 窗体应用程序”是什么意思?
  • 我先看看这里:zetcode.com/gui/vbwinforms 它适用于 Mono,但相似之处是惊人的,你应该能够从那里得到你想要的地方。
  • 我的意思是,“以编程方式创建整个 Windows 窗体应用程序”是指... 以前的开发人员决定通过键入而不是使用 Visual Studio 来创建所有按钮、控件等。现在,我们必须支持它。与视觉相比,继续以编程方式编辑表单太麻烦了。
  • 你确定吗?如果您有一个带有可读代码的 FormName.Designer.vb 部分类文件,则该文件可能是由 Visual Studio 创建的。这就是设计师现在的工作方式,并且没有其他用于布局的设计师文件。
  • 打开了一个空白的 VB 文件,实际上每个按钮都以编程方式输入到文件中,没有考虑任何策略。

标签: .net vb.net winforms visual-studio-2010


【解决方案1】:

可能没有快速的方法来做到这一点。

人们选择完全用代码而不是通过设计器构建表单的正常原因有两个。

一种是在窗体上显示的控件将在运行时确定,而不是在设计时预先确定。这可能是因为他们通过加载/卸载特定视图所需的控件来为许多不同的屏幕/视图使用相同的表单,或者可能是表单是数据驱动的,其中有关您想要的控件的信息是存储在数据库中。

完全用代码构建表单的另一个原因是,当您使用的自定义控件不适用于表单设计器时。

任何这些原因都需要您(至少)在设计器中手动重建表单,并且可能需要您从头开始重新创建控件,甚至根本无法使用设计器。

【讨论】:

  • 在我们的特殊情况下,这些原因都不适用,感谢您的快速响应。
【解决方案2】:

首先,所有表单都是“以编程方式”创建的。这意味着设计师所做的只是为您生成代码,但它仍然是 C#/VB,就像您自己编写代码一样。 There's no magic here.

VS 设计器使用partial 类将生成的 UI 代码与您的代码分开。 Designer 有点奇怪,因为它有自己的 UI 代码自定义解析器 (which causes odd quirks),但它只是解析代码。根据我的经验,它相当灵活,并且不太依赖于它自己生成的严格结构和格式(尽管它会重新格式化代码以适应它自己的约定)。因此,如果您可以将所有“UI 构建”代码放在继承自 System.WIndows.Forms.Form 的类的 InitializeComponent() 方法中,那么您应该很好。

您可能希望将它放在一个单独的文件中(使用部分类)并从构造函数中调用InitializeComponent() 方法。

【讨论】:

  • 感谢您的快速回复乍得。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 2016-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多