【问题标题】:Disabling column header in datagridview C#在datagridview C#中禁用列标题
【发布时间】:2013-08-01 02:48:16
【问题描述】:

我有一个 datagridview 'audit_TrailDataGridView'。我需要禁用此列标题,即:当用户单击列标题时不会发生任何事情。

private void audit_TrailDataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
         {
            //do what?

         }

请帮忙。

【问题讨论】:

  • 目前,点击列标题时会发生什么?
  • 点击该列时当前会发生什么?
  • 它导致意外错误“无效异常”并且应用程序停止。我不确定是什么导致了错误(即使经过多次调试),但它仅在用户单击 datagridview 上最后一列的列标题时发生。所以,我试图禁止用户点击。
  • “相关”栏目有很多看起来很相似的问题。你检查过那些吗?如果这些没有回答您的问题,您能否发布确切的错误消息和堆栈跟踪?
  • 顺便说一句,XY problem 的经典示例。

标签: c# datagridview


【解决方案1】:

可能会发生一些不希望的事情,因为当用户单击标题时,会引发一个事件,该事件旨在处理用户单击实际单元格而不是标题时的情况(例如,CellDoubleClick 事件)。您需要手动检查所有此类事件中单击的单元格不是标题:

 private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
 {
     if (e.RowIndex >= 0)
     {
         //do something here
     }
 }

【讨论】:

    【解决方案2】:

    dataGridView1_SelectionChanged 事件我遇到了类似的问题。

    我希望在单击标题列时对 DataGridView 进行排序,但不实现我希望为非标题行单击运行的代码。

    所以基本上我找到了一个愚蠢的解决方案,我在 dataGridView1_SelectionChanged 方法中添加了一个巨大的 try catch 块,包含此方法中的所有内容。

    也许这也适用于您或其他人。

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      • 2014-07-04
      • 1970-01-01
      • 2022-11-01
      • 1970-01-01
      相关资源
      最近更新 更多