解决方案 »

  1.   

    自己顶下我是做B/S项目的,项目需要做一个C/S小工具,是我的这种验证方式有问题吗?另外弱弱的问下@caozhy,我有发错版块吗?我没有找到WinForm版块
      

  2.   

    private void cboPhaseID_Validating(object sender, CancelEventArgs e) CS方式没必要用到这种方法直接在你的按下的按钮事件中加入 就可以了if (this.cboPhaseID.SelectedIndex == -1)
                {
                 
                    this.epErrInfo.SetError(this.cboPhaseID, "请选择一项!");
                }
                else
                {
                    this.epErrInfo.SetError(this.cboPhaseID, "");
                }
      

  3.   

    WinForms就发在这里就可以了。
      

  4.   

    DropDownClosed时间不能处理?点击一下ComboBox,执行完DropDown后会自动进入DropDownClosed事件,DropDownClosed事件按理不应该触发的表现为点一下ComboBox,下拉项展开又自动收起了,没办法点击需要选中的值
    正常是点一下ComboBox,下拉项展开,点击需要选中的值,下拉项收起
      

  5.   


    用cboPhaseID_Validating用这个事件我是想实时的将错误反馈给用户,即焦点离开,就进行验证,存在问题马上提示非常谢谢,根据你的回答,我想到了另外一个思路,cboPhaseID_Validating事件里不去设置“e.Cancel = true;”,在保存事件里判断errorprovider控件有没有提示错误,如果所有控件的都没有提示过错误则进行数据保存。不过我目前只了解到可以借助errorprovider的GetError事件对单个控件的有没有错误提示进行判断errorprovider有没有其他属性和方法对所有控件一次性验证有没有错误提示
      

  6.   


    受到5楼的启发最终的解决方案如下:
    所有验证还是写到控件的Validating事件中  去掉了e.Cancel = true;【需要的控件比较多时,考虑后期进一步对Validating事件进行封装,以批量注册Validating事件,传入验证类型,调用通用验证类,窗口关闭时销毁所有Validating事件】