-2

我有一个 simplr windows 表单输入(学生姓名,学生 ID)要显示到列表框。

在添加值之前,我需要在列表框中检查重复的学生 ID。我可以在学生 ID 文本框中使用错误提供程序来执行此操作吗?非常感谢任何帮助

请检查下面我的代码的最后一点 - 是否需要 for/foreach 循环?谢谢

private void txtSid_Validating(object sender, CancelEventArgs e)
    {
        bool can = false;
        int sid = 0;


        if (string.IsNullOrEmpty(txtSid.Text))
        {

            ep1.SetError(txtSid, "Please Enter Student ID");
            can = true;
        }
        else if (!int.TryParse(txtSid.Text, out sid))
        {
            ep1.SetError(txtSid, "Student ID must be a number");
            can = true;
        }
        else
         for (int i = 0; i < lstDisplay.Items.Count; i++)
        {

            if (lstDisplay.Items[i].ToString().Contains(txtSid.Text))
            {
             ep1.SetError(txtSid, "Student ID already added");
            can = true;
            }
        {
                        }

        e.Cancel = can;
    }
4

1 回答 1

0

是的,您可以使用错误提供程序。实际上,对于您正在做的就地验证,我倾向于使用它们。我尝试限制弹出框,因为它们可能会让用户感到厌烦。例如,错误提供程序与禁用“保存”按钮相结合,可以提供阻止继续以及说明原因的信息,所有这些都不会出现烦人的弹出窗口。

至于检查列表框中已有的项目,是的,我会遍历它们一次检查一个。如果它们很多,或者性能非常关键,那么您可以为添加到列表框中的项目实现自定义比较器。它们也可以是自定义类,以促进这一切的机制。

于 2017-05-15T15:40:09.517 回答