对于我缺乏术语和理解,我提前表示歉意,我对 .NET 和 Visual Studio 非常陌生。
我在 Windows 7 64 位上的 Visual Studio Community 2019 版本 16.10.4 中使用 Visual Basic 为 .NET 5.0 制作控制台应用程序。
我正在尝试使用 Windows.Forms.Form 对象并弹出一个小窗口,并要求用户从列表框中选择一个项目。但到目前为止,我还没有成功地将 System.Windows.Forms 添加到我的项目中。
I tried Imports System.Windows.Forms
但这给出了警告“导入'System.Windows.Forms'中指定的命名空间或类型不包含任何公共成员或无法找到。”。
我转到“项目”->“添加 COM 引用”->“System_Windows_Forms”(版本 2.0)
该引用有一个警告:“无法为类型库 {215d64d2-031c-33c7-96e3-61794cd1ee61} 创建包装器程序集。类型库“System_Windows_Forms”已从 CLR 程序集导出,无法作为 CLR 程序集重新导入。 ”
我听说直接添加 .dll 可以解决这个问题,所以我删除了 COM 引用并转到“项目”->“添加项目引用”->“浏览”->“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System”。 Windows.Forms.dll”
当我搜索 Forms.dll 时,我发现了大约 10 个文件,因此我只选择了看起来最正确的一个。之后,我可以在脚本中使用这些对象,并且 Visual Studio 可以自动完成对象的属性和功能。但是当我实际进入调试器并尝试运行脚本时,我收到错误:
System.IO.FileNotFoundException
H结果=0x80070002
消息=无法加载文件或程序集“System.Drawing.Common,版本=0.0.0.0,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51”。该系统找不到指定的文件。
来源=System.Windows.Forms
堆栈跟踪:
在 System.Windows.Forms.Control..ctor(布尔 autoInstallSyncContext)
在 System.Windows.Forms.Control..ctor()
在 System.Windows.Forms.ListControl..ctor()
在 System.Windows.Forms.ListBox..ctor()
在 GetNovel.Program.DetermineNovel()
这是导致错误的我的子程序:
Sub DetermineNovel()
Dim Novels As Object = {{"Moon's Labyrinth", "ML", True, 262, 362}, {"Keyboard Immortal", "KI", False, 254, 254}}
Dim SelectBox As New Windows.Forms.ListBox
Dim i As Long
For i = LBound(Novels) To UBound(Novels)
SelectBox.Items.Add(Novels(i, 0))
Next i
Dim NovelSelect As New Windows.Forms.Form
NovelSelect.Controls.Add(SelectBox)
NovelSelect.Text = "Select Novel:"
NovelSelect.Show()
End Sub