我正在研究c#中的程序。共有3列。我们称他们为A,B和C. 如果未选中B列中的任何行但检查了列A,则应弹出显示警告消息,指示已选中A列但未选中B列的位置ID(行)。
我设法创建显示消息来执行此操作,但它没有在消息框中获取位置,而是显示以下值:
" DataGridView Column [0] Row[2] "
。
我想我必须将我的locationID
变量列表转换为字符串,但结果是相同的。
以下是声明ListLocationID的代码:
List<string> listLocationID = new List<string>();
List<int> listLocationIDIndex = new List<int>();
for (int i = 0; i < this.dataGridLocationDetails.Rows.Count; i++)
{
if (((Convert.ToBoolean(dataGridLocationDetails.Rows[i].Cells["colViewPermission"].Value) == true)
&& (Convert.ToBoolean(dataGridLocationDetails.Rows[i].Cells["colIssuePermission"].Value) == false)
))
{
listLocationID.Add(dataGridLocationDetails.Rows[i].Cells["colLocationID"].ToString());
listLocationIDIndex.Add(i);
}
}
bool isEmpty = true;
if (listLocationID.Count > 0)
isEmpty = false;
if(!isEmpty)
{
string message = string.Format("The following Location ID has view permission but not issue permission:{0} Do you wish to continue?", DisplayString(listLocationID));
DialogResult dialogResult = MessageBox.Show(message, "WARNING", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
for (int i = 0; i < listLocationIDIndex.Count; i++)
{
}
}
else if (dialogResult == DialogResult.No)
{
return;
}
}
以下是显示字符串的代码的一部分:
private string DisplayString(List<string> listLocationID)
{
String strSentence = string.Empty;
for (int i = 0; i < listLocationID.Count; i++)
{
strSentence = strSentence + (listLocationID[i].ToString());
}
return strSentence;
}
注意:listLocationID [i]应该在消息框中显示位置名称。而是显示索引列名称。
以下是复选框选择的快照: [![在此处输入图像说明] [1]] [1]
以下是我得到的输出的快照: [![在此处输入图像说明] [2]] [2]
感谢任何帮助。
答案 0 :(得分:3)
使用
listLocationID.Add(dataGridLocationDetails.Rows[i].Cells["colLocationID"].Value.ToString());
而不是
listLocationID.Add(dataGridLocationDetails.Rows[i].Cells["colLocationID"].ToString());
要允许评论中提到的整洁格式:
使用StringBuilder而不是string
StringBuilder strSentence = new StringBuilder();
for (int i = 0; i < listLocationID.Count; i++)
{
strSentence.Append(listLocationID[i]);
strSentence.AppendLine();
}
return strSentence.ToString();
答案 1 :(得分:0)
循环看起来不错。你不必显式转换为字符串,因为它是字符串数组。
public class Program
{
public static void Main(string[] args)
{
List<string> listLocationID = new List<string>();
listLocationID.Add("one");
listLocationID.Add("two");
listLocationID.Add("three");
String strSentence = string.Empty;
for (int i = 0; i < listLocationID.Count; i++)
{
strSentence = strSentence + (listLocationID[i]);
}
Console.Write(strSentence);
}
}
你也可以试试foreach
foreach (String locationID in listLocationID)
{
strSentence = strSentence + locationID ;
}