【问题标题】:Datagridview clicked header first cell exceptionDatagridview单击标题第一个单元格异常
【发布时间】:2020-12-20 07:12:56
【问题描述】:

我有一个大问题。我在开发 Windows 窗体应用程序时遇到了它。我在表单上放置了一个有 4 列和几行的 datagridview。当我单击第一列的标题时,它会抛出一条错误消息。我也附上了这个。我试图为“CellClick”事件指定一个条件,以免引起问题。不幸的是,他没有解决。奇怪,因为附加列中不存在这种错误现象。无论我尝试和修改了什么,我都无法消除。索尔 CellClick 事件处理程序代码:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex == -1)
            return;
    }

【问题讨论】:

  • 请用英文发布异常详情,哈哈
  • 对不起。 "对象类型只能是 DateTime。"
  • 哎呀,好像还有其他事情在发生...您的代码看起来不错。也许在点击处理程序中放置一个断点并逐步执行代码?这是 DellContentClick 中唯一的代码吗?我相信还有一个 CellDoubleContentClick 或其他东西 - 你使用它吗?
  • 我试过这个方法,变量值为-1。不幸的是,CellDoubleContentClick 事件也没有成功。我找不到 DellContentClick 事件。
  • 好吧 - 如果没有更多信息,我们真的无能为力......

标签: c# visual-studio winforms datagridview


【解决方案1】:

我怀疑第一列用于显示 DateTime 值,并且 DataGridViewColumn.SortMode Property 设置为 DataGridViewColumnSortMode.Automatic。当您单击列标题时,DGV 会尝试对列进行排序。

问题在于,在一行或多行中,存储在 cell[0] 中的值既不是 DateTime 值,也不是 null。这就是您收到以下错误消息的原因:

System.ArgumentException: '对象必须是 DateTime 类型。'

如果您不希望列自动排序,请将 SortMode 属性设置为 DataGridViewColumnSortMode.NotSortableDataGridViewColumnSortMode.Programmatic

【讨论】:

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