La columna DataGridView personalizada se duplica cuando se usa en Designer

Hice un componente DataGridView personalizado que tiene un DataGridViewImageColumn estándar dentro. Una nueva propiedad cambia la visibilidad de la columna cuando no la necesito en una tabla en particular. Agrego la columna en el constructor y la actualizo en el evento CellFormatting. Esa es la parte que funciona según lo previsto.

Cuando suelto el control en un nuevo formulario, aparece con la nueva columna en él. La ejecución del programa da como resultado dos columnas de imagen en la cuadrícula.

Un nuevo formulario acaba de agregar el componente y establece Dock.Fill

Cuando lo inicio sin cambiar nada, me muestra dos columnas. El primero funciona como debería y el segundo siempre muestra la imagen x faltante (no tenía datos, por lo que muestran ambas x).

En el diseñador del formulario, se agrega automáticamente una columna de imagen ne.

private CustomDataGridView customDataGridView1;
private System.Windows.Forms.DataGridViewImageColumn dataGridViewImageColumn1;

Cuando sigo editando en el formulario, a veces sucede que VS crea incluso más copias de las mismas columnas. Para solucionar el problema, tengo que borrar la lista DGV. De columnas de vez en cuando.

¿Cómo puedo evitar que VS copie mis campos?

El siguiente código es la parte mínima para reproducir el problema.

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);
    }
}

Editar: También intenté usarthis.AutoGenerateColumns = false; como enCustom DataGridView agrega columnas cada vez que construyo dijo. Nada cambia.

Al borrar la lista de columnas en el formulario, se elimina la columna de trabajo y se deja una columna dataGridViewImageColumn1, que es solo una columna vacía completa con el nombre incorrecto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta