Me disculpo de antemano por mi falta de terminología y comprensión, soy muy nuevo en .NET y Visual Studio.
Estoy en Windows 7 de 64 bits en Visual Studio Community 2019 Versión 16.10.4 creando una aplicación de consola para .NET 5.0 usando Visual Basic.
Estoy tratando de usar el objeto Windows.Forms.Form y hacer una pequeña ventana emergente y pedirle al usuario que seleccione un elemento de un ListBox. Pero hasta ahora no he tenido éxito en agregar System.Windows.Forms a mi proyecto.
Imports System.Windows.Forms pero me dio la advertencia "El espacio de nombres o el tipo especificado en Imports 'System.Windows.Forms' no contiene ningún miembro público o no se puede encontrar".
Fui a Proyecto -> Agregar referencia COM -> "System_Windows_Forms" (Versión 2.0)
Esa referencia tiene una advertencia: "Error al crear el ensamblaje contenedor para la biblioteca de tipos {215d64d2-031c-33c7-96e3-61794cd1ee61}. La biblioteca de tipos 'System_Windows_Forms' se exportó desde un ensamblaje CLR y no se puede volver a importar como un ensamblaje CLR. "
Escuché que agregar el .dll directamente puede solucionarlo, así que eliminé la referencia COM y fui a Proyecto -> Agregar referencia de proyecto -> Examinar -> "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System. Windows.Forms.dll"
Cuando busqué Forms.dll, encontré alrededor de 10 archivos, así que elegí el que parecía más correcto. Después de eso, pude usar los objetos en mi script y Visual Studio pudo autocompletar las propiedades y funciones de los objetos. Pero cuando entré en el depurador e intenté ejecutar el script, aparece el error:
System.IO.FileNotFoundException
HResult=0x80070002
Mensaje = No se pudo cargar el archivo o ensamblaje 'System.Drawing.Common, Version = 0.0.0.0, Culture = neutral, PublicKeyToken = cc7b13ffcd2ddd51'. El sistema no puede encontrar el archivo especificado.
Fuente=Sistema.Windows.Forms
Rastreo de pila:
en System.Windows.Forms.Control..ctor (booleano autoInstallSyncContext)
en Sistema.Windows.Forms.Control..ctor()
en System.Windows.Forms.ListControl..ctor()
en System.Windows.Forms.ListBox..ctor()
en GetNovel.Program.DetermineNovel()
Aquí está mi sub que causa el error:
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 SubEdite manualmente el archivo .csproj. Establezca TargetFramework y UseWindowsForms como se muestra.
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0-windows</TargetFramework> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> ...Editar: actualizado a .NET 6