C# 从checklistbox checkeditems列表获取字符串值

C# 从checklistbox checkeditems列表获取字符串值,c#,validation,C#,Validation,我正在尝试设置验证,如果用户检查了某个值,则必须在保存数据之前检查同一页面上但另一个复选框列表中的另一个值 我试图以这种方式设置一个嵌套的foreach,其中我的代码经过一个循环,如果选择了值1,它会用foreach检查值2,如果没有选择该值,我会抛出一条错误消息 这看起来是可行的,但是itemChecked.tostring()不是以这种方式设置的。我做错了什么?(注意字符串测试就在我的测试阶段) 试试这个: if(clst1.CheckedItems.Cast<object>()

我正在尝试设置验证,如果用户检查了某个值,则必须在保存数据之前检查同一页面上但另一个复选框列表中的另一个值

我试图以这种方式设置一个嵌套的foreach,其中我的代码经过一个循环,如果选择了值1,它会用foreach检查值2,如果没有选择该值,我会抛出一条错误消息

这看起来是可行的,但是itemChecked.tostring()不是以这种方式设置的。我做错了什么?(注意字符串测试就在我的测试阶段)

试试这个:

if(clst1.CheckedItems.Cast<object>()
                     .Any(x=>object.Equals(x.ToString(),"value1"))&&
   !clst2.CheckedItems.Cast<object>()
                     .Any(x=>object.Equals(x.ToString(),"value2"))){ 
   MessageBox.Show("if value 1 is selected value 2 must be selected", 
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
if(clst1.CheckedItems.Cast()
.Any(x=>object.Equals(x.ToString(),“value1”))&&
!clst2.CheckedItems.Cast()
.Any(x=>object.Equals(x.ToString(),“value2”)){
MessageBox.Show(“如果选择值1,则必须选择值2”,
“错误”,MessageBoxButtons.OK,MessageBoxIcon.Error);
}

请注意,如果项目的文本是您所说的
,则您的checkedlistbox中项目的基础数据类型仍然不清楚。代码正常。否则,您必须提供更多信息。

您知道您正在进行参考比较吗?我遗漏了什么吗?@SriramSakthivel遗漏了ToString,这不是参考comparison@SriramSakthivel我认为要比较引用,我们使用
对象。ReferenceEquals
对象。Equals
可用于比较值,将使用公共方法
Equals
,因此,对于自定义类型,我们必须正确重写
Equals
。是的,对不起,我指的是项目的文本。此代码看起来不错,但它从未设置为selectedItem的字符串。x、 在这种情况下,ToString()正好等于2。我错过了什么?
if(clst1.CheckedItems.Cast<object>()
                     .Any(x=>object.Equals(x.ToString(),"value1"))&&
   !clst2.CheckedItems.Cast<object>()
                     .Any(x=>object.Equals(x.ToString(),"value2"))){ 
   MessageBox.Show("if value 1 is selected value 2 must be selected", 
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}