我有这段代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace RssNewsFeeder
{
public partial class Form1 : Form
{
int lastIndex;
string readableRss;
private List<string> lines = new List<string>();
public Form1()
{
InitializeComponent();
readableRss = RssReader.covertRss("http://rotter.net/rss/rotternews.xml");
lines = Regex.Split(readableRss, "\r\n")
.Where(str => !string.IsNullOrEmpty(str))
.ToList();
for (int i = 0; i < lines.Count; i++)
{
listView1.Items.Add(lines[i]);
}
}
当我使用断点时,我看到这些行包含100个索引。 例如,在索引0中我有:פרשתאיילגולן:כךהודוהקטינות - “שיקרנו" 然后在索引1我有:星期三,2014年1月29日06:01:56 +0200
然后在索引2中我有:“你好这是一个文本” 在索引3中,我看到:周三,2014年1月29日06:01:56 +0200
行的每个文本索引都有自己的日期和时间。
所以在listView1中我希望以这种格式从上到下连续看到这个索引:
大家好 星期三,2014年1月29日06:01:56 +0200
大家好 星期三,2014年1月29日06:01:56 +0200
这是一个测试 星期三,2014年1月29日06:01:56 +0200
此格式。
我该怎么办?如果我只是按照我的方式使用它现在将行添加到listView1我看到它是这样的:
如何将其更改为我想要的格式?
编辑**
现在试过这个:
listView1.Columns.Add("Message", 300, HorizontalAlignment.Left);
listView1.Columns.Add("Date", 300, HorizontalAlignment.Left);
readableRss = RssReader.covertRss("http://rotter.net/rss/rotternews.xml");
lines = Regex.Split(readableRss, "\r\n")
.Where(str => !string.IsNullOrEmpty(str))
.ToList();
for (int i = 0; i < lines.Count; i += 2)
{
ListViewItem item = new ListViewItem();
item.Text = lines[i];
item.SubItems.Add(lines[i + 1]);
listView1.Items.Add(item);
}
结果如前:
仍然不好。
编辑**
这是我现在使用的代码:
listView1.Columns.Add("Message", 300, HorizontalAlignment.Left);
listView1.Columns.Add("Date", 300, HorizontalAlignment.Left);
readableRss = RssReader.covertRss("http://rotter.net/rss/rotternews.xml");
lines = Regex.Split(readableRss, "\r\n")
.Where(str => !string.IsNullOrEmpty(str))
.ToList();
StringBuilder strToAddToList = new StringBuilder();
for (int i = 0; i < lines.Count; i++)
{
if (i % 2 == 0)
{
strToAddToList.Append(lines[i]);
continue;
}
if (i % 2 != 0)
{
strToAddToList.Append(" ");
strToAddToList.Append(lines[i]);
listView1.Items.Add(strToAddToList.ToString());//You can replace this with your ListView.Add code
strToAddToList.Clear();
}
}
仍然没有像我想的那样工作。
listView1中的格式应为:
文本 日期和时间
文本 日期和时间
文本 日期和时间
如果其中一个文本行太长,那么它应该自动拆分为一个新行:
文本 其余的文字 日期和时间
但事实上,我没有看到文本只是其中的一部分,它看起来像listView1中的行,但是从一边到另一边,我没有看到每个文本的日期和时间。
变量readableRss的格式为:
תוכניתקרי:ירושליםהמזרחיתבירתפלסטין 星期三,2014年1月29日09:45:52 +0200
הערביםקוראיםלפגועב'סיבובהשערים'האמורלהתקייםמחר 星期三,2014年1月29日09:38:23 +0200
הסיטואציהבסוריה:עימותיםצמודיגדרברמה''ג 星期三,2014年1月29日09:36:22 +0200
טורקיה:הצבאהטורקיחופרתעלותבעומק4מטריםלאורךהגבולהסוריבאזור''אלראעי''。 星期三,2014年1月29日09:35:26 +0200
所以也许不需要变量行,我们可以直接使用字符串变量readableRss。
这是listView1中的格式。
但我一直认为它像我之前上传的图像一样混乱。
这是变量readableRss的外观图像,这就是它在listView1中的样子:
答案 0 :(得分:1)
如果我正确理解您的问题,那么索引0处有一些文本,索引1处有一些日期,您想要将它们连接起来并将其添加到列表中。同样对于索引2和3等等。
我试图在下面的代码中解决您的问题。看看它是否符合您的需要并告诉我。
//Dummy values for testing
List<string> lines = new List<string>();
lines.Add("Hello from text");
lines.Add("Wed, 29 Jan 2014 06:01:56 +0200");
lines.Add("Hello from text1");
lines.Add("Wed, 29 Jan 2014 06:01:56 +0200");
StringBuilder strToAddToList = new StringBuilder();
for (int i = 0; i < lines.Count; i++)
{
if (i % 2 == 0)
{
strToAddToList.Append(lines[i]);
continue;
}
if (i % 2 != 0)
{
strToAddToList.Append(" ");
strToAddToList.Append(lines[i]);
Console.WriteLine(strToAddToList);//You can replace this with your ListView.Items.Add code
strToAddToList.Clear();
}
}
编辑:您可以通过以下两种方式将文本添加到listView(我还没有编译代码,所以请纠正任何错误):
ListViewItem item = new ListViewItem();
item.Text = strToAddToList.ToString();
listView1.Items.Add(item);
或者你在问题中的表现
listView1.Items.Add(strToAddToList.ToString());
希望这有帮助。
答案 1 :(得分:0)
您需要向ListView
添加两列,如下所示:
listView1.Columns.Add("Message", 300, HorizontalAlignment.Left);
listView1.Columns.Add("Date", 300, HorizontalAlignment.Left);
然后改变你的for循环:
for (int i = 0; i < lines.Count; i+=2)
{
ListViewItem item = new ListViewItem();
item.Text= lines[i];
item.SubItems.Add(lines[i+1]);
listView1.Items.Add(item);
}
答案 2 :(得分:-1)
ListView1.Items.Add(“列表项文字”)