【问题标题】:How can I display an error to the user while they're still editing a DataGridView cell?当用户仍在编辑 DataGridView 单元格时,如何向用户显示错误?
【发布时间】:2010-02-25 16:13:47
【问题描述】:

如果用户在 DataGridView 的单元格中输入无效文本,我想阻止用户离开该单元格并在该单元格中显示错误图标,并在工具提示中显示错误消息。似乎在单元格不再处于编辑模式之前,通常不会出现错误图标。我找到了一个example,说明如何在它仍处于编辑模式时显示错误图标,但是当我将鼠标悬停在它上面时,工具提示不会出现。

我使用的是 Windows 7,但我也无法让它在 XP 中运行,因此我们可以排除这种情况。

任何人都可以找出示例中缺少的内容或建议一种可以产生相同结果的替代方法吗?

要使示例正常运行,您需要创建自己的表单,复制/粘贴示例代码,添加 using System.Drawing.Drawing2D;,并自己分配事件处理程序。

【问题讨论】:

    标签: c# winforms validation datagridview


    【解决方案1】:

    建议你看看IDataErrorInfo接口

    例如看下面的post

    【讨论】:

    • 谢谢!我今天会玩这个。
    • 我不确定这是否适合我。文档一文不值。我查看了帖子,甚至查看了其中一个答案所链接的博客,但这并没有帮助我理解如何让它与我的DataGridView 一起正常工作。我看不出如何使用它来防止用户输入无效的DateTime(如 null 或“Blarg”)。对于普通的字符串列,直到单元格失去焦点后才会验证,这违背了我的目标。也许我只是不知道如何正确使用它。任何与DataGridView 相关的其他示例都将受到欢迎。
    【解决方案2】:

    它有点 hack-y,但只需在验证方法的末尾添加类似这样的内容即可(假设您的视图未绑定到某些数据,以便 EndEdit() 将新值提交给数据结构或东西):

    if (e.Cancel)
    {
        myView.EndEdit();
        myView.BeginEdit(true);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      相关资源
      最近更新 更多