Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

127
Visualizações
La clase derivada cree que mi clase base se eliminó

Intenté crear una clase derivada de WinForm, pero tengo un problema: cuando intento crear mi DerivedClass (a través de Agregar > Nuevo elemento > Formulario derivado), Visual Studio me dice que el objeto no existe.

Estoy seguro de que el objeto en juego es BaseForm porque aparece el mensaje de Setting Error de configuración en la consola. (supongo que se debe a que se llama a la función Close() )

 public partial class BaseForm : Form { Port port; public BaseForm() { InitializeComponent(); } protected void Form1_Load(object sender, EventArgs e) { port = new Port(); if (port.Port_Setting() != 0) { Console.WriteLine("Setting Error"); Close(); } } }

Por ahora, BaseForm está vacío, solo un formulario sin ningún componente agregado.

La única parte utilizada de mi clase Port hasta ahora es esta, simplemente inicializándola para su uso posterior:

 class Port { protected SerialPort sp = new SerialPort(); public int Port_Setting() { Console.WriteLine("Setting port"); if (sp.IsOpen) { sp.Close(); } sp.BaudRate = 38400; sp.DataBits = 8; sp.StopBits = System.IO.Ports.StopBits.One; sp.Parity = System.IO.Ports.Parity.None; sp.PortName = "COM3"; bool Error = false; try { sp.Open(); } catch (UnauthorizedAccessException) { Error = true; } catch (ArgumentException) { Error = true; } catch (System.IO.IOException) { Error = true; } if (Error) { return -1; } return 0; } }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Generación de la clase derivada a través de la interfaz de Visual Studio (Agregar> Nuevo elemento> Formulario derivado) –

Ajá, ahora las cosas se me están aclarando.

Cuando deriva un formulario en Visual Studio y abre el formulario derivado en el diseñador, se ejecutará parte del código en el formulario base (el padre del que heredó).

No conozco todos los métodos desde la parte superior de mi cabeza, pero creo que el evento de load , por ejemplo, se ejecutará en el formulario base cuando cargue el formulario heredado en el diseñador en el momento del diseño.

Esto no es un defecto de VS, es por diseño. La idea es que cuando crea un control de usuario personalizado, el código del control de usuario también se puede ejecutar en tiempo de diseño. Y heredar una forma de otra es algo parecido para el diseñador.

Lo que puede hacer para resolver esto es verificar en el código del formulario base si está en tiempo de diseño o no.

He hecho esto agregando este método en mi formulario base:

 protected bool IsInDesignMode { get { return DesignMode || LicenseManager.UsageMode == LicenseUsageMode.Designtime; } }

puedes usarlo así

 private void FormBase_Load(object sender, EventArgs e) { if (IsInDesignMode == false) { // write code here that should only run at runtime } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda