在C#类库中创建Windows窗体是否可行?

18

我一直在使用C#构建DLL类库,作为提供自定义API的应用程序的插件。到目前为止,它们主要包括与数据库、计算、磁盘操作等的接口。我想知道是否可以构建并显示一个Windows窗体,其中包含文本框、按钮等控件,放置在DLL类库中?

我尝试过:

using System.Windows.Forms;

但是该命名空间没有被识别。

感谢您的输入。


我刚刚右键单击类库 > 添加 > 新项目 > 窗体,没有任何问题。我有什么遗漏吗? - Neil Smith
除了使用子句,还要将引用与表单项目的引用进行比较! - TaW
6个回答

12

我发现对我最有效的方法是创建一个新的Windows Forms项目,然后转到项目属性并将其更改为类库。这样,您可以右键单击解决方案资源管理器中的文件夹,所有WinForms项目都会出现,就好像它仍然是WinForms项目一样,但它是一个类库。这也适用于WPF应用程序。


3
请从classlib项目中删除Program.cs文件,谢谢。 - dlchambers
这个答案太棒了,真的太棒了。它将为许多人节省时间和金钱。先生,请鞠躬。 - Sean Patrick Sutton
2
使用Visual Studio 2019,我注意到现在有一个“Windows Forms Class Library”模板可用,这应该可以节省一些时间。 - Jason Evans

10
你肯定可以在你的类库中使用 Windows Forms。以下是几种情况:
  1. 你正在使用 FormDesigner 将表单添加到库中。你可以右键单击项目名称,点击“添加”,然后在窗体中选择“Windows form”。它应该会为你的表单添加所需的引用。
  2. 你正在从其他项目复制一个表单。在这种情况下,Visual Studio 将无法识别该表单,并将其显示为简单的 C# 源文件。在这种情况下,在 Visual Studio 中在项目下右键单击“References” 。点击“添加引用”,然后从左侧窗格选择 Framework。选择 System.Windows.Form 和 System.Drawing,然后点击确定。这样 Visual Studio 就可以理解该表单,你就可以使用 Form Designer 进行设计和编辑了。
  3. 如果你是使用代码创建表单,则按照步骤 2 中提到的方式添加所需程序集的引用。你应该能够在项目中使用 System.Windows.Form,使用语句“using System.Windows.Form;”。

5

是的,您可以这样做。您需要在类库项目中添加对 System.Windows.Forms 的引用(右键单击项目 -> 添加 -> 引用)。


5

你可以手动编辑项目文件以包含Windows窗体:

右键单击项目文件--> "编辑项目文件",然后在<PropertyGroup>标记下添加"<UseWindowsForms>true</UseWindowsForms>"

<PropertyGroup>
    <TargetFramework>net472</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
    <OutputType>Library</OutputType>    
</PropertyGroup>

0

现在是2021年7月29日,我正在使用VS2019和net5。

创建新项目时,有一个名为“Windows窗体类库”的模板,默认情况下其依赖项中包含App.WindowsForm。

上天和微软的工程师们终于听到了我们的祈祷。


-1

如果新表单已经在必须保持为Windows应用程序的Windows项目中,请尝试以下步骤,不确定是否符合您的要求...希望能有所帮助。

  1. 创建新的Dll项目
  2. 将Form.cs、FormDesigner.cs和form.resx复制到新的dll项目文件夹中
  3. 添加现有项

1
这是“一个”解决方案,但不太方便。相反,我会创建一个Windows Forms应用程序项目,并将输出类型更改为类库。这将有助于添加所需的引用并使用它们。 - Cengiz Araz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接