您好我想弄清楚如何比较组合框中每个项目的字符长度。 我尝试了一些但没有任何效果。
string longestName = "";
foreach (string possibleDate in comboBox1)
但是这个foreach给了我一个错误。
comboBox1.Text.Length
这确实给了我所选项目的长度,但没有比较所有项目。 我会帮助你!
答案 0 :(得分:3)
您没有遍历ComboBox的项目列表。
尝试这样的事情:
string longestName = "";
foreach (string possibleDate in comboBox1.Items)
{
int stringLength = possibleDate.Length;
if(stringLength > longestName.Length)
longestName = possibleDate;
}
或者你可以跳过它并使用LINQ:
var longestName = comboBox1.Items.Cast<string>().OrderByDescending(item => item.Length).First();
答案 1 :(得分:0)
应该是这样的:
string longestName = "";
foreach (string possibleDate in comboBox1.Items){
if(longestName.Length < possibleDate.Length){
longestName = possibleDate;
}
}
答案 2 :(得分:0)
答案取决于几个因素。是'2016-09-27'
类型的项目还是其他类? ypu是手动填充00:00:00
还是绑定到6:00:00
?
手动填充/类型字符串
'2016-09-28'
手动填充/复杂类型
string
如果您覆盖ComboBox
的{{1}}方法,则可以执行此操作:
DataSource
...或者您可以使用 string longestName = "";
comboBox1.Items.Add("aaa ddd ddd");
comboBox1.Items.Add("aaa");
comboBox1.Items.Add("aaa ff");
comboBox1.Items.Add("aaa x");
foreach (string possibleDate in comboBox1.Items)
{
int stringLength = possibleDate.Length;
if (stringLength > longestName.Length)
longestName = possibleDate;
}
Console.WriteLine(longestName);
//or:
string longest = comboBox1.Items.Cast<string>().OrderByDescending(a => a.Length).FirstOrDefault();
的{{1}}:
class MyClass
{
public string MyProperty { get; set; }
}
comboBox1.Items.Add(new MyClass { MyProperty = "aaa ddd ddd" });
comboBox1.Items.Add(new MyClass { MyProperty = "aaa" });
comboBox1.Items.Add(new MyClass { MyProperty = "aaa ff" });
comboBox1.Items.Add(new MyClass { MyProperty = "aaa x" });
foreach (MyClass possibleDate in comboBox1.Items)
{
int stringLength = possibleDate.MyProperty.Length;
if (stringLength > longestName.Length)
longestName = possibleDate.MyProperty;
}
Console.WriteLine(longestName);
//or
string longest = comboBox1.Items.Cast<MyClass>().OrderByDescending(a => a.MyProperty.Length).FirstOrDefault().MyProperty;
如果您的ToString()
受到约束,则不必覆盖MyClass
方法以使用 class MyClass
{
public string MyProperty { get; set; }
public override string ToString()
{
return MyProperty;
}
}
string longest = comboBox1.Items.Cast<MyClass>().OrderByDescending(a => a.ToString()).FirstOrDefault().ToString();
,这种方式与项目类型无关:
GetItemText()