将ListView转换为行分隔的字符串数组,反之亦然
本文关键字:字符串 数组 反之亦然 分隔 ListView 转换 | 更新日期: 2023-09-27 18:01:45
我试图在我的ListView中采取所有项目,并将每个项目写入字符串数组内的新行(或类似的东西)。这样我就可以将这些值传递给对象中的字符串属性,然后保存到SQL数据库(Varchar(max))。
我已经尝试过了
public string ConvertToString(ListView l)
{
ArrayList list = new ArrayList();
foreach (string item in l.Items)
{
list.Add(item);
}
return list.ToString();
}
,但我显然错过了我正在努力的换行符分割。当前的代码只保存"System.Collections"。
我也做了很多谷歌搜索和不断遇到"字符串[]",但这没有好,因为我必须预定义的长度,我不知道,因为它不断变化,当项目被添加到ListView
当从数据库读取值时,我还需要一个反向方法来将每行放回ListView。
StringBuilder完美地保存了CR/LF字符。
public string ConvertToString(ListView l)
{
StringBuilder list = new StringBuilder();
foreach (string item in l.Items)
list.AppendLine(item);
return list.ToString();
}
反向类似:
public voidConvertToString(ListView l, string dbString)
{
string [] sep = {"'r'n"};
foreach (string item in dbString.Split(sep, StringSplitOptions.None))
l.Items.Add(item);
}
我实现了这个函数来转换为String数组:
/// <summary>
/// Convert a ListView to an array of string
/// </summary>
/// <param name="ListView1"></param>
/// <returns>an array of strings</returns>
private string[] ConvertToArray(ListView ListView1)
{
string[] array = new string[ListView1.Items.Count];
for (int i = 0; i <= ListView1.Items.Count - 1; i++)
{
array[i] = ListView1.Items[i].Text;
}
return array;
}