我有一个带有datagridview的win表单(c#)。我将网格的数据源设置为数据表。
用户想要检查数据表中的某些数据是否存在于另一个源中,因此我们循环表将行与其他源进行比较,并将数据表上的rowerror设置为短消息。 datagridview未显示这些错误。 datagridviewrows上的errortext已设置,但未显示错误。
我是否只是期望显示的错误太多而且它们仅在编辑网格中的数据的上下文中显示?
我一直在修补这一天,并搜索了一个发布simalar问题无法帮助的人 - 帮助!
答案 0 :(得分:9)
检查AutoSizeRowsMode
是否设为DataGridViewAutoSizeRowsMode.None
。我发现当Errortext
未设置为默认值为none时,不会显示行AutoSizeRowsMode
预览图标。
DataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None
答案 1 :(得分:8)
对于原始海报来说这有点晚了,但是这里为我解决了这个问题......
检查行高。如果小于 19 则不会绘制图标。尝试将其设置得更高,看看是否存在问题。
grid.RowTemplate.Height = 22
答案 2 :(得分:5)
如果将e.Cancel设置为True,则不会显示图标。这不会让用户知道该行存在问题。
答案 3 :(得分:4)
DataGridView
设置ErrorText
属性时必须显示{{1}}。
答案 4 :(得分:1)
检查{{1}}属性。
答案 5 :(得分:1)
如果行标题尺寸太小,则错误图标未显示的另一个原因是。默认情况下,它是46.如果由于某种原因您将行标题设置为较小的大小(例如30),则不会显示错误图标。
答案 6 :(得分:1)
如果您使用 Visual Studio 2017 并且您的数据未绑定到数据源,那么您必须在单元格上设置 ErrorText 而不是像这样的行:
{{1}}
答案 7 :(得分:0)
如果其他人现在还在搜索:对我有用的解决方案是将(相同的)DataSource重新分配给DataGridView,并在设置RowError属性后调用网格上的Refresh方法。
(VB.Net代码:)
myDataGridView.DataSource = myDataSet.Tables(0)
myDataGridView.Refresh()
这样做之后,最终显示了新分配的RowError。
答案 8 :(得分:-1)
我相信错误只会在编辑时显示。你可以做的是在你的DataTable中添加一个bool列,它驱动DataGridView中图像/自定义列的显示,反映是否有错误。
答案 9 :(得分:-1)
发送ESC按键会强制显示(至少对我有效)
SendKeys.Send("{ESC}");
答案 10 :(得分:-1)
在
中验证用户输入时,我遇到了类似的问题private void gridGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
处理程序。问题是我在输入无效的情况下设置了e.Cancel=true
。