【发布时间】:2016-04-12 02:33:21
【问题描述】:
下面的代码将允许我检查 datagridview 中的两列以获取颜色形式的字符串(即“Red”、“Blue”、“Cadetblue”等...)。但是,如果在数据网格中输入的字符串开头没有大写字母,它将返回一个真正的布尔值。如果字符串全部为小写或首字母大写,如何修改此代码,以便单词“blue”或“red”返回 false bool?
输入到单元格中的颜色需要匹配 C# 库颜色之一,否则将返回 false bool。我确实有一种方法让用户以一种简单的方式输入创建值,但我想为选择手动执行此操作的用户运行此检查。
public static bool CheckForColorsInColorsColumns(DataGridView datagridviewname)
{
bool colorsarenotpresent = false;
for (int i = 0; i < datagridviewname.Rows.Count; i++)
{
var value = datagridviewname.Rows[i].Cells[4].Value.ToString();
var value2 = datagridviewname.Rows[i].Cells[5].Value.ToString();
List<string> colors = new List<string>();
foreach (PropertyInfo prop in typeof(Color).GetProperties())
{
if (prop.PropertyType.FullName == "System.Drawing.Color")
if (prop.Name != "Transparent")
{
colors.Add(prop.Name);
}
}
if (!colors.Contains(value) || !colors.Contains(value2))
{
colorsarenotpresent = true;
break;
}
}
return colorsarenotpresent;
}
【问题讨论】:
-
在你的 dtagrid 中,总是会有首字母大写的单词?你问题的最后一部分没有意义;您要么想在全部小写时返回false,要么不返回。如果您将第一个字母大写并且确实包含该单词,则返回 true。对吗?
-
如果用户在数据网格中手动输入值,他们可能会输入一个值而不用大写第一个字母。如果第一个字母是大写的并且包含单词,那么我想返回 false,这就是它当前的工作方式。
-
如果我手动输入“AColor”而不是“acolor”,这很糟糕吗?好吧,那和你的 Cadetblue 有什么不同
-
如果你手动输入“黑色”,那没关系。如果您手动输入“黑色”,它现在不起作用。
-
所以你是说“黑色”应该和“黑色”一样工作?您想要不区分大小写的比较?