En mi aplicación, estoy ejecutando el mismo winform en diferentes contextos para controlar la visibilidad de botones, enabeling de campos de texto y el texto del encabezado de winform. La forma en que decidí hacer esto es simplemente pasando una cadena al constructor de formulario y verificarlo con un par de instrucciones if que a su vez contienen los ajustes de winform deseados.Llamada de miembro virtual en el constructor
if (formContext == "add")
{
Text = "Add member";
}
if (formContext == "edit")
{
Text = "Change role";
userTextBox.Enabled = false;
searchButton.Visible = false;
}
Esto funciona bien, sin embargo las palabras clave "texto" Obtener una blue Squigly línea agregada por ReSharper con el siguiente mensaje: Call Viritual en el constructor. ¿Es esto un problema potencial o simplemente algún tipo de mensaje ReSharper demasiado entusiasta?
Cualquier aclaración o sugerencia para mejorar mi implementación sería muy apreciada.
Sí ... esto es lo que yo pensaba. Alguna sugerencia sobre cómo podría hacer esto mejor. La estabilidad es la prioridad número uno en este proyecto y preferiría evitar posibles comportamientos inesperados. – Sakkle
¿Quiere decir sugerencias además de no llamar a métodos virtuales en su ctor de clase base? :-) En esta situación, podría usar el enlace de datos para vincular la propiedad Text del formulario a un campo de cadena en una clase de modelo GUI que contendría la lógica necesaria para decidir qué debería decir la barra de título. – mookid8000
Sí ... probablemente podría, aunque no sabría por dónde empezar, y supongo que tendría que hacer lo mismo para el botón y el campo de texto. – Sakkle