Ошибка с кастомным Control

Рейтинг: 0Ответов: 1Опубликовано: 11.08.2023

В некоторых проектах использую кастомную версию DataGridView с отображение вертикального скрола по умолчанию даже если нет никаких записей. Пример контрола такой:

internal partial class CustomDataGridView : DataGridView
{
    internal CustomDataGridView() : base()
    {
        this.VerticalScrollBar.Visible = true;
        this.VerticalScrollBar.VisibleChanged += new EventHandler(VerticalScrollBar_VisibleChanged);
    }

    internal void VerticalScrollBar_VisibleChanged(object sender, EventArgs e)
    {
        if (!this.VerticalScrollBar.Visible)
        {
            this.VerticalScrollBar.Location = new Point(this.ClientRectangle.Width - this.VerticalScrollBar.Width - 1, 1);
            this.VerticalScrollBar.Height = this.ClientRectangle.Height - 2;
            this.VerticalScrollBar.Width = this.VerticalScrollBar.Width;
            this.VerticalScrollBar.Show();
        }
    }
}

Он работает исправно, но при любом изменении в редакторе формы, её контролов и даже этого контрола теряется инициализация этого контрола в Form.Designer.cs и приходится руками прописывать заново его следующей строкой:

this.dataGridView1 = new CustomDataGridView();

Есть ещё несколько контролов как расширителей от базовых контролов с переопределением функционала, но с ними нет никаких проблем в формах.

Вопрос: в чём может быть проблема такого поведения Visual Studio 2017 (возможно и для других версий тоже) и как это исправить?

Ответы

▲ 0

Это может быть связано с тем, что конструктор CustomDataGridView непустой. Вынесите оттуда всё в другой метод и вызывайте его в конструкторе формы.