[英]Datagridview compare cell string
我需要比較一個單元格中的 2 個字符串值。(如果單元格 1 中的字符串像“DPS”和“MAN”)但我不知道為什么我的 && 運算符不像我想的那樣工作。 我沒有得到結果。
有人可以解釋我在這里做錯了什么嗎?
private void Warning()
{
foreach (DataGridViewRow row in dataGridView4.Rows)
if (row.Cells[1].Value.ToString() == "DPS"
&& row.Cells[1].Value.ToString() == "MAN")
{
panelWarnung.BackColor = Color.Red;
}
else
{
panelWarning.BackColor = Color.LightGreen;
}
}
解決方案
這行得通!
foreach (DataGridViewRow row in dataGridView4.Rows)
if (row.Cells[1].Value.ToString().Contains("DPS") == row.Cells[1].Value.ToString().Contains("MAN"))
panelWarning.BackColor = Color.Red;
我已取消刪除此答案,因為自從看到您的屏幕截圖后,我意識到它實際上非常相關
此答案適用於某行上的單元格是否有 MAN 或另一行上的另一個單元格中是否有 DPS
例如,像這樣的單元格:
MAN
ext
DPS
wow
MAN
MAN
這通常是一個心理學問題,我懷疑來自人們談論 collections 事物時的說話方式:
從這個盒子里取出所有的紅色和綠色水果
如果你把這個任務交給一個人,他們可能會給你一把紅色水果和一把綠色水果。
..但這實際上是“或”
看看這個盒子,如果一個水果是紅色的或者是綠色的,把它拿出來給我
我們已經根據每個單獨的水果提出了請求,這意味着它不再使用“and”了:
看看這個盒子,如果一個水果是紅色的,如果它是綠色的,把它拿出來給我
C# 將逐行考慮您的行,如果您希望 MAN 行為紅色並且您還希望 DPS 行為紅色,那么您需要使用||
或者。 從人類的角度來看,當您說“MAN 是紅色的,DPS 是紅色的”時,您正在使用整個系列。但是當您單獨處理項目時,您不能說“如果它是 MAN 和 DPS,請制作它是紅色的”.. 你說“如果它是 MAN 或它的 DPS;讓它變成紅色”
相反,您需要:
row.Cells[1].Value.ToString() == "DPS" || row.Cells[1].Value.ToString() == "MAN")
^^
note the OR, not AND
總的來說,我推薦以下代碼:
private void Warning()
{
panelWarning.BackColor = Color.LightGreen;
foreach (DataGridViewRow row in dataGridView4.Rows)
if (row.Cells[1].Value.ToString()== "DPS" || row.Cells[1].Value.ToString() == "MAN")
row.Cells[1].Style.BackColor = panelWarnung.BackColor = Color.Red;
else
row.Cells[1].Style.BackColor = Color.White;
}
如果它們是 MAN 或 DPS,這會將任何單個單元格點亮為紅色,並且警告面板為紅色
如果 DPS 和 MAN 在單元格中,則警告面板應變為紅色
那是
row.Cells[1].Value.ToString().Contains("DPS")
&& row.Cells[1].Value.ToString().Contains("MAN")
Contains
測試字符串是否存在於單元格內的某處。 ==
測試單元格中的整個字符串是否完全等於某個值。並且沒有變量可以同時等於兩個不同的值
包含將允許您擁有單元格值,例如:
MANDPS
DPS,MAN
DPSINGH'S MANAGER
:)
針對以下評論更改了答案:
foreach (DataGridViewRow row in dataGridView4.Rows)
if (row.Cells[1].Value.ToString().Contains("DPS")
&& row.Cells[1].Value.ToString().Contains("MAN")) {
panelWarnung.BackColor = Color.Red;
break; // <-- NB: Stop the loop after the first invalid cell!
}
現在,如果 DPS 和 MAN都包含在其中一個單元格中,則您的面板應該設置為指定的顏色。
但是請注意,您還需要在將顏色設置為紅色后添加break
語句,否則您可能會為下一個正確的行覆蓋它並設置為 gre。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.