Пользовательский столбец DataGridView дублируется при использовании его в Designer
Я сделал пользовательский компонент DataGridView, который имеет стандартный DataGridViewImageColumn внутри. Новое свойство изменяет видимость столбца, когда я не нуждаюсь в конкретной таблице. Я добавляю столбец в конструктор и обновляю его при событии CellFormatting. Это та часть, которая работает как задумано.
Когда я помещаю элемент управления в новую форму, он появляется с новым столбцом в нем. Запуск программы приводит к двум столбцам изображения в сетке.
Новая форма просто добавила компонент и установила Dock.Fill
Когда я запускаю его, ничего не меняя, он показывает мне две колонки. Первый работает так, как должен, а второй всегда показывает отсутствующее изображение х (в нем не было данных, поэтому они показывают оба х).
В конструкторе формы автоматически добавляется столбец ne изображения.
private CustomDataGridView customDataGridView1;
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;
Когда я продолжаю редактировать в форме, иногда случается, что VS создает еще больше копий тех же столбцов. Чтобы решить эту проблему, я должен время от времени очищать список DGV.Columns.
Как я могу запретить VS копировать мои поля?
Следующий код является минимальной частью для воспроизведения проблемы.
public class CustomDataGridView : DataGridView
{
private DataGridViewImageColumn EditStatusIcons;
private bool hasIcons = true;
public bool HasIcons
{
get { return this.hasIcons; }
set
{
if (this.Columns["EditIcons"] == null) return;
this.Columns["EditIcons"].Visible = value;
this.hasIcons = value;
}
}
public CustomDataGridView()
{
this.EditStatusIcons = new System.Windows.Forms.DataGridViewImageColumn();
this.EditStatusIcons.HeaderText = "";
this.EditStatusIcons.Name = "EditStatusIcons";
this.Columns.Add(this.EditStatusIcons);
}
}
Редактировать: Я также пытался использоватьthis.AutoGenerateColumns = false;
как вПользовательский DataGridView добавляет столбцы каждый раз, когда я строю сказал. Ничего не меняется
Очистка списка столбцов в форме удаляет рабочий столбец и оставляет столбец dataGridViewImageColumn1, который является просто пустым столбцом с неправильным именем.