【问题标题】:Disable default cell selection in a datagridview after form load in WinForm Application在 WinForm 应用程序中加载表单后禁用 datagridview 中的默认单元格选择
【发布时间】:2014-06-02 17:27:43
【问题描述】:

我在窗口窗体应用程序中有一个 dataGridView 控件。三列添加到 dataGridView。为了显示一些空白单元格,我在 dataGridView 中添加了 20 个空行。(否则 dataGridView 只显示灰色区域)。

在 dataGridView 控件上,我添加了三列“a”、“b”、“c”。在表单加载中,我添加了这个,

dataGridView1.Rows.Add(20);

表单初始化后,datagridview 显示一些空白单元格,但选择了第一行中的第一个单元格(以蓝色突出显示)。 请注意,datagridview 中没有数据。我不知道如何清除默认选择。

我做了一些研究。有一些讨论。我试过了,他们没有工作。我认为这是因为我在控件中没有数据。但是以下链接中提到的方法是针对加载数据的datagridview。

Disable default cell selection in datagridView

disable window gridview get focus on first row

还有一些关于 Windows 商店应用程序的讨论。 (我正在使用 windows 窗体应用程序)

http://social.msdn.microsoft.com/Forums/windowsapps/en-US/1dc26694-1147-4d5b-8b7d-11c9c493e605/how-to-disable-default-selection-in-gridview-

how to prevent autoselection of first item in GridView on databind?

如果您能给我一些想法,请提前感谢。

【问题讨论】:

  • 没有。将所述单元格的 Selected 属性设置为 false 无需任何数据即可正常工作。如果您没有成功(我记得去年遇到过奇怪的问题),请执行以下操作:将另一个单元格设置为 true,然后再设置为 false。它会起作用的,保证!
  • @Taw:在表单加载中添加:dataGridView3.Rows[0].Cells[0].Selected = false;不工作。然后试试这个,dataGridView3.Rows[0].Cells[1].Selected = true; dataGridView3.Rows[0].Cells[1].Selected = false;仍然没有工作。我是不是哪里错了?
  • 嗯,我不知道。我想我之前将 MultiSelect 设置为 false 并在之后将其重置..
  • @Taw:顺便说一句,即使我尝试 dataGridView3.Rows[0].Cells[0].Selected = false; ataGridView3.Rows[0].Cells[2].Selected = true;仍然选择了第一行中的第一个单元格...
  • @Taw:好的,在我将 MultiSelect 设置为 false 后它就可以工作了。

标签: c# winforms datagridview


【解决方案1】:

如果有人仍然对此有问题,我发现当上述所有建议都失败时,这对我有用。

在DataGridView上为DataBindingComplete创建一个事件然后添加这个方法datagridview1.ClearSelection();

【讨论】:

    【解决方案2】:

    我在项目表单的Shown-event 中使用了此代码:

    dataGridView1.ClearSelection();
    

    【讨论】:

      【解决方案3】:

      DataGridView1.FirstDisplayedCell.Selected = False

      【讨论】:

        【解决方案4】:

        我无法在新的测试 DGV 中重现,但我以前见过。

        这是我发现的工作:

        bool old = dataGridView1.MultiSelect;
        dataGridView1.MultiSelect = false;
        dataGridView1.Rows[1].Cells[0].Selected = true;
        dataGridView1.Rows[1].Cells[0].Selected = false;
        dataGridView1.MultiSelect = old;
        

        有时我不知道是什么原因造成的。 (..但是一旦我这样做了,我会把它添加到答案中。)

        【讨论】:

          【解决方案5】:

          在我的例子中,我使用这段代码让它工作:

          dataGridView1.EndEdit();
          

          希望这对某人有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多