【发布时间】:2026-01-05 06:35:01
【问题描述】:
我已经在 Google 上搜索过并为此搜索过...
当我的应用程序启动时,它会加载一个配置文件并在 DataGridView 中显示其内容 - 包括在配置文件中发现的错误。
所以当我的方法 Main() 退出时,这里有一些关键值:
-
dgv.Rows[0].Cells[3].ErrorText包含 “只允许使用字母数字字符” -
dgv.Visible是假的 -
dgv.Rows[0].Cells[3].IsInEditMode是假的
以下是相关代码:
public Main()
{
InitializeComponent();
dgvStationConfiguration.DataSource = FileReaderWriter.GetStationsFromConfigFile();
StationConfigurationValidator.ValidateAllCellsAndSetAllErrorMessages(dgvStationConfiguration);
}
和
public static bool ValidateAllCellsAndSetAllErrorMessages(DataGridView dgv)
{
bool areAllCellsValid = true;
foreach (DataGridViewRow row in dgv.Rows)
{
foreach (DataGridViewCell cell in row.Cells)
{
bool isCellValid = ValidateCellAndSetErrorMessage(cell); // validate all cells in order to set their error text/glyphs; this flag is just to be able to return a summary
if (isCellValid == false)
{
areAllCellsValid = false;
}
}
}
return areAllCellsValid;
}
和
public static bool ValidateCellAndSetErrorMessage(DataGridViewCell cell)
{
string columnName = cell.OwningColumn.Name;
string cellValue = cell.EditedFormattedValue.ToString();
cell.ErrorText = StationConfigurationValidator.GetCellErrorMessage(columnName, cellValue);
return cell.ErrorText == string.Empty;
}
当方法完成并且向用户显示 DataGridView 时,没有可见的红色错误字形。如果我单击该单元格然后再单击该单元格(即 [0][3])- 字形出现。
我的印象是,主要问题是设置 ErrorText 时(在方法 Main 中) DataGridView 仍然不可见。
我变得如此绝望,以至于我正在考虑这个令人难以置信的黑客:让计时器在 10 毫秒内关闭(以允许 Main 方法退出)以设置 ErrorText -然后禁用(取消挂钩)计时器。这是一个我无法忍受的黑客...只是说明我的绝望... :-(
所以... 我需要做什么才能让那个字形显示???
【问题讨论】:
-
你能告诉我们你的代码吗?
-
您可能会在这个问题中找到解决方案:*.com/questions/291475/…
-
@kurubaran,我在问题中添加了代码。
-
@Saragis,在发布之前,我已经多次阅读该问题/答案。没有任何帮助,除了它在那里说的:“在设置 ErrorText 属性时 DataGridView 必须可见” 我认为这可能是问题(如上所述).. .但我只是不确定如何解决它......
-
好吧,这可能确实是问题所在。那么你的网格什么时候变得可见?是否可以重构以便在将可见性设置为 true 后立即进行验证检查?或者您可以保持原样,但将错误和行/列值存储在集合中,并在使网格可见后应用。
标签: c# .net winforms data-binding datagridview