お世話になります。

VS2019Community VC#のフレームワーク4.5です。

DataGridViewに、カラムをコード上で初期化しようとコードを書いているのですが、
並ぶ順番が思う通りにいかずに悩んでいます。

DataGridViewのColumnsにAddしていけば、Addした順に左から並ぶはずなのですが、
Addの際にifで条件分岐すると、順番が末尾に来てしまいます。
以下が、そのコード部分です。

    //  継承元
    protected DataGridViewButtonColumn status
                = new DataGridViewButtonColumn()
    {
        Name = "状態",
        Width = 200,
    };

    public virtual void set(bool editable)
    {
        this.dgv.Columns.Clear();

        string[] stDefines = {
            "No_204","営_60","StaffNo_110","氏名_210","担当者名_120","開始_145","終了_145"
        };

        foreach (string s in stDefines)
        {
            DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
            col.HeaderText = s.Substring(0, s.IndexOf("_"));
            col.Name = "col" + s.Substring(0, s.IndexOf("_"));
            col.ReadOnly = true;
            col.Width = int.Parse(s.Substring(s.IndexOf("_") + 1));
            this.dgv.Columns.Add(col);
        }

        if(editable)
        {
            //  末尾に『状態』ボタンを追加する
            this.dgv.Columns.Add(this.status);
        }
    }

    // 継承先
    private DataGridViewButtonColumn detail = new DataGridViewButtonColumn()
    {
        Name = "詳細",
        Width = 80,
    };

    public override void set(bool editable)
    {
        // this.dgvはDataGridViewです。
        this.dgv.Columns.Clear();

        string[] stDefines = {
            "No_204","営_60","企業名 & 部門名_320","担当者名_120","開始_145","終了_145",
        };

        foreach (string s in stDefines)
        {
            DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
            col.HeaderText = s.Substring(0, s.IndexOf("_"));
            col.Name = "col" + s.Substring(0, s.IndexOf("_"));
            col.ReadOnly = true;
            col.Width = int.Parse(s.Substring(s.IndexOf("_") + 1));
            this.dgv.Columns.Add(col);
        }

    // ここです!
        if (editable)
        {
            this.dgv.Columns.Add(this.status);
        }

        this.dgv.Columns.Add(this.detail);
    }

引数editableにtrueを渡してやることで、『状態』ボタンのColumnを追加する流れです。
しかし、いろいろ試してのですが、どうしても後に追加しているdetailが最初に来てしまい、
ifで追加しているはずのstatusがdetailの右側に来てしまいます。
順番通りであれば、statusの次にdetailが来るはずなのですが…。

ちなみに、ifを除いて必ずstatusが入る処理にすれば、正しく順番通りになります。

原因と対策をお教えいただけますでしょうか。

よろしくお願いいたします。