Мне было интересно, не могли бы вы помочь мне ниже?
У меня есть проект с несколькими формами окон. В большинстве этих форм будут использоваться одни и те же методы, поэтому я создал BaseForm и унаследовал его.
Все работало нормально, но когда я добавил в Form1 несколько текстовых полей в конструкторе, который наследуется от BaseForm, Visual Studio начал падать. Теперь я не могу открыть конструктор Form1, так как VisualStudio вылетает каждый раз, когда я делаю это.
Пожалуйста, смотрите ниже мой базовый класс и Form1, который наследуется от BaseForm. Я провел некоторое исследование и выяснил, что многие люди советуют не использовать визуальное наследование с формами Windows.
Есть ли другой способ, а не наследование, или я делаю что-то не так? Является ли проблемой то, что как baseform, так и Form1 используют InitializeComponent ()?
public partial class BaseForm : Form
{
private List<Form> OpenForms = new List<Form>();
public BaseForm()
{
ListOpenForms();
CloseOpenForms();
this.FormBorderStyle = FormBorderStyle.None;
InitializeComponent();
SetBackroundPicture();
ShowPostionForm();
}
private void ListOpenForms()
{
foreach (Form frm in Application.OpenForms)
{
OpenForms.Add(frm);
}
}
private void CloseOpenForms()
{
foreach (Form frm in OpenForms)
{
if (frm.Text != "MainMenu")
frm.Close();
}
}
private void ShowPostionForm()
{
this.MdiParent = MainMenu.MainForm;
this.Dock = DockStyle.Fill;
this.Show();
}
private void SetBackroundPicture()
{
this.BackgroundImage = global::OMSRoutine.Properties.Resources.BackgroundPlain;
this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
}
Form1:
public partial class Form1 : BaseForm
{
public Form2()
{
InitializeComponent();
}
}