如何根据条件解析显示文本? [英] How to resolve display text according to if condition?
问题描述
您好,
此代码仅生成第一个tilepath消息,我想根据所选图像行显示消息。
< pre lang =cs> if (dgvDisplayTiles.CurrentRow.Cells [ 4 ]。值!= < span class =code-keyword> null && dgvDisplayTiles.CurrentRow.Cells [ 5 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 6 ]。值== null && dgvDisplayTiles.CurrentRow.Cells [ 7 ]。值== null & ;& dgvDisplayTiles.CurrentRow.Cells [ 8 ]。值== null )
{
string str1 = dgvDisplayTiles.CurrentRow.Cells [ 9 ]。值。的ToString();
string [] IstImage = str1.Replace( ,, )。替换( \\Library \\, ,)。删除( 0 , 1 ).Split(' ,');
// string [] lstImage = str.Split(',');
tilepath1 = IstImage [ 0 ]。ToString();
MessageBox.Show(tilepath1);
}
else if (dgvDisplayTiles.CurrentRow.Cells [ 5 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 6 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 7 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 8 ] .Value!= null )
{
string str2 = dgvDisplayTiles.CurrentRow .Cells [ 9 ]。Value.ToString();
string [] IstImage = str2.Replace( ,, )。替换( \\Library \\, ,)。删除( 0 , 1 ).Split(' ,');
tilepath1 = IstImage [ 0 ]。ToString();
tilepath2 = IstImage [ 1 ]。ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
}
else if (dgvDisplayTiles.CurrentRow.Cells [ 6 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 7 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 8 ]。值!= null )
{
string str3 = dgvDisplayTiles。 CurrentRow.Cells [ 9 ]。Value.ToString();
string [] IstImage = str3.Replace( ,, )。替换( \\Library \\, ,)。删除( 0 , 1 ).Split(' ,');
tilepath1 = IstImage [ 0 ]。ToString();
tilepath2 = IstImage [ 1 ]。ToString();
tilepath3 = IstImage [ 2 ]。ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
}
else if (dgvDisplayTiles.CurrentRow.Cells [ 7 ]。值!= null && dgvDisplayTiles.CurrentRow.Cells [ 8 ]。值!= null )
{
string str4 = dgvDisplayTiles.CurrentRow.Cells [ 9 ]。Value.ToString();
string [] IstImage = str4.Replace( ,, )。替换( \\Library \\, ,)。删除( 0 , 1 ).Split(' ,');
tilepath1 = IstImage [ 0 ]。ToString();
tilepath2 = IstImage [ 1 ]。ToString();
tilepath3 = IstImage [ 2 ]。ToString();
tilepath4 = IstImage [ 3 ]。ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
MessageBox.Show(tilepath4);
}
else if (dgvDisplayTiles.CurrentRow.Cells [ 8 ]。值!= null )
{
string str5 = dgvDisplayTiles.CurrentRow.Cells [ 9 ]。Value.ToString();
string [] IstImage = str5.Replace( ,, )。替换( \\Library \\, ,)。删除( 0 , 1 ).Split(' ,');
tilepath1 = IstImage [ 0 ]。ToString();
tilepath2 = IstImage [ 1 ]。ToString();
tilepath3 = IstImage [ 2 ]。ToString();
tilepath4 = IstImage [ 3 ]。ToString();
tilepath5 = IstImage [ 4 ]。ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
MessageBox.Show(tilepath4);
MessageBox.Show(tilepath5);
}
else
{
string str6 = dgvDisplayTiles.CurrentRow.Cells [ 9 ]。Value.ToString();
string [] IstImage = str6.Replace( ,, )。替换( \\Library \\, ,)。删除( 0 , 1 ).Split(' ,');
tilepath1 = IstImage [ 0 ]。ToString();
tilepath2 = IstImage [ 1 ]。ToString();
tilepath3 = IstImage [ 2 ]。ToString();
tilepath4 = IstImage [ 3 ]。ToString();
tilepath5 = IstImage [ 4 ]。ToString();
tilepath6 = IstImage [ 5 ]。ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
MessageBox.Show(tilepath4);
MessageBox.Show(tilepath5);
MessageBox.Show(tilepath6);
}
谢谢
Ankit Agarwal
软件工程师
你显然需要查看数据:你需要知道当前行是什么,以及它包含什么。
没有它,你只是在猜测。
所以,在第一个if
条件下放一个断点,然后查看CurrentRow的值和各个单元格。
我猜想有些数据不符合您的想法,或者这是在您没想到的时候执行的。
我们无法为您解决 - 我们无法访问您的数据!
根据您拥有的内容,这是正确的编码。如果执行if
语句的第一个子句,则将跳过所有其他子句。您不应该以这种方式使用else
,只需使用多个if
语句,例如:
if (dgvDisplayTiles.CurrentRow.Cells [ 4 ] .Value!= null &&
// 等
{
MessageBox.Show(tilepath1);
}
if (dgvDisplayTiles.CurrentRow.Cells [ 5 ]。值!= null &&
// etc
{
MessageBox.Show(tilepath2);
}
// 依此类推
Hello,
This code generate only first tilepath message,i want to show the message according to selected image row.
if (dgvDisplayTiles.CurrentRow.Cells[4].Value != null && dgvDisplayTiles.CurrentRow.Cells[5].Value != null && dgvDisplayTiles.CurrentRow.Cells[6].Value == null && dgvDisplayTiles.CurrentRow.Cells[7].Value == null && dgvDisplayTiles.CurrentRow.Cells[8].Value == null)
{
string str1 = dgvDisplayTiles.CurrentRow.Cells[9].Value.ToString();
string[] IstImage = str1.Replace(",", "").Replace("\\Library\\", ",").Remove(0, 1).Split(',');
//string[] lstImage = str.Split(',');
tilepath1 = IstImage[0].ToString();
MessageBox.Show(tilepath1);
}
else if (dgvDisplayTiles.CurrentRow.Cells[5].Value != null && dgvDisplayTiles.CurrentRow.Cells[6].Value != null && dgvDisplayTiles.CurrentRow.Cells[7].Value != null && dgvDisplayTiles.CurrentRow.Cells[8].Value != null)
{
string str2 = dgvDisplayTiles.CurrentRow.Cells[9].Value.ToString();
string[] IstImage = str2.Replace(",", "").Replace("\\Library\\", ",").Remove(0, 1).Split(',');
tilepath1 = IstImage[0].ToString();
tilepath2 = IstImage[1].ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
}
else if (dgvDisplayTiles.CurrentRow.Cells[6].Value != null && dgvDisplayTiles.CurrentRow.Cells[7].Value != null && dgvDisplayTiles.CurrentRow.Cells[8].Value != null)
{
string str3 = dgvDisplayTiles.CurrentRow.Cells[9].Value.ToString();
string[] IstImage = str3.Replace(",", "").Replace("\\Library\\", ",").Remove(0, 1).Split(',');
tilepath1 = IstImage[0].ToString();
tilepath2 = IstImage[1].ToString();
tilepath3 = IstImage[2].ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
}
else if (dgvDisplayTiles.CurrentRow.Cells[7].Value != null && dgvDisplayTiles.CurrentRow.Cells[8].Value != null)
{
string str4 = dgvDisplayTiles.CurrentRow.Cells[9].Value.ToString();
string[] IstImage = str4.Replace(",", "").Replace("\\Library\\", ",").Remove(0, 1).Split(',');
tilepath1 = IstImage[0].ToString();
tilepath2 = IstImage[1].ToString();
tilepath3 = IstImage[2].ToString();
tilepath4 = IstImage[3].ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
MessageBox.Show(tilepath4);
}
else if (dgvDisplayTiles.CurrentRow.Cells[8].Value != null)
{
string str5 = dgvDisplayTiles.CurrentRow.Cells[9].Value.ToString();
string[] IstImage = str5.Replace(",", "").Replace("\\Library\\", ",").Remove(0, 1).Split(',');
tilepath1 = IstImage[0].ToString();
tilepath2 = IstImage[1].ToString();
tilepath3 = IstImage[2].ToString();
tilepath4 = IstImage[3].ToString();
tilepath5 = IstImage[4].ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
MessageBox.Show(tilepath4);
MessageBox.Show(tilepath5);
}
else
{
string str6 = dgvDisplayTiles.CurrentRow.Cells[9].Value.ToString();
string[] IstImage = str6.Replace(",", "").Replace("\\Library\\", ",").Remove(0, 1).Split(',');
tilepath1 = IstImage[0].ToString();
tilepath2 = IstImage[1].ToString();
tilepath3 = IstImage[2].ToString();
tilepath4 = IstImage[3].ToString();
tilepath5 = IstImage[4].ToString();
tilepath6 = IstImage[5].ToString();
MessageBox.Show(tilepath1);
MessageBox.Show(tilepath2);
MessageBox.Show(tilepath3);
MessageBox.Show(tilepath4);
MessageBox.Show(tilepath5);
MessageBox.Show(tilepath6);
}
Thanks
Ankit Agarwal
Software Engineer
You clearly need to look at the data: you need to know what the current row is, and what it contains.
Without that, you are just guessing.
So, put a breakpoint on the firstif
condition, and look at the values of CurrentRow, and the individual cells.
I would guess that some data is not what you think, or this is being executed at a time you didn''t expect.
We can''t solve it for you - we don''t have access to your data!
That is correct according to what you have coded. If the first clause of theif
statement is executed, then all the other clauses will be skipped. You should not be usingelse if
in this way, just use multipleif
statements, something like:
if (dgvDisplayTiles.CurrentRow.Cells[4].Value != null && // etc { MessageBox.Show(tilepath1); } if (dgvDisplayTiles.CurrentRow.Cells[5].Value != null && // etc { MessageBox.Show(tilepath2); } // and so on
这篇关于如何根据条件解析显示文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!