【发布时间】:2026-02-10 05:00:01
【问题描述】:
我有一个包含 5 个文本框的组框控件。
作为验证过程的一部分,每次用户在文本框中输入内容时,我都必须检查重复条目。
我已将这些文本框引用存储在通用列表中,即List<TextBox>
例如:我已将列表命名为 uniqueIdList。
为了检查重复条目,我依赖 TextBox 控件提供的 Validated 事件。
即每当用户输入文本并移动到另一个控件时,控件都会调用 OnValidated 事件。我处理此事件以检查重复项。
即
private void txtID1_Validated(object sender, EventArgs e)
{
if (txtID1.Text != string.Empty)
{
ValidateDuplicateId(sender);
}
}
ValidateDuplicateId() 方法
private void ValidateDuplicateId(object sender)
{
errProviderDuplicateID.Clear();
TextBox input = (TextBox)sender;
if(uniqueIdList.GroupBy(tb => tb.Text)
.Where(gp => gp.Skip(1).Any()).Count() > 1)
{
errProviderDuplicateID.SetError((TextBox)sender,"Duplicate ID");
errProviderDuplicateID.BlinkStyle = ErrorBlinkStyle.AlwaysBlink;
}
}
因此,每当用户在字段中输入文本时,文本框控件都会触发一个经过验证的事件。我通过传递文本框的引用在每个事件处理程序中调用 ValidateDuplicateId()。
ValidateDuplicateId 方法主要是检查重复项(如果相同文本出现超过 1 次)并使用 errorprovider 控件引发错误。
虽然,上述方法工作得还不错,但不知何故,我不太相信它的实现。你们中的任何人都可以提出更好的方法来解决这个问题。
提前致谢 增值税
【问题讨论】:
标签: c# linq validation