当所有列都不可见时,Datagridview 在设置数据源后显示第一列

Datagridview shows first column after setting Datasource when all columns are invisible

我有一个 DataGridView,我将所有列的可见设置为 false。
现在我设置了 DataSource,Kaboom,你猜怎么着?第一列是可见的。为什么会这样?什么原因?
有没有办法阻止此默认行为或用其他操作覆盖它?

虽然 B.Yaylaci 的 suggested link 的答案会有所帮助,但我觉得它们对于维护您的代码的未来开发人员而言是模糊的 - 另外,如果您想使您的 ID 列可见怎么办有些点,但不希望它显示在列的最后?在更改 DataSource 时更正这些问题的一种简单方法是在 DataGridView.DataBindingComplete 事件中设置列可见性以获得更一致的行为。

例如,如果出于某种原因我希望 DataGridView 在绑定后完全显示为空*,直到我做出其他决定(某种逻辑或用户交互?),那么我可能会执行以下操作:

private void DataGridView1_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
    foreach (DataGridViewColumn col in this.dataGridView1.Columns)
    {
        col.Visible = false;
    }

    this.dataGridView1.RowHeadersVisible = false;
    this.dataGridView1.ScrollBars = ScrollBars.None;
}

*注意:如果稍后使列可见,则需要重置 RowHeadersVisibleScrollBars