Wie füge ich in einigen Zeilen dieselbe Zeichenfolge zu einer ListBox hinzu?

Im oberen Teil des Formulars habe ich:

string[] data;
Color []color;

Im Konstruktor:

color = new Color[1] { Color.Red};

Dann habe ich eine Funktion, die ich in den Konstruktor lade:

private void ListBoxLoadKeys(Dictionary<string,List<string>> dictionary, 
    string FileName)
{
    string line = System.String.Empty;
    using (StreamReader sr = new StreamReader(keywords))
    {
        while ((line = sr.ReadLine()) != null)
        {
            int i = line.Count();
            tokens = line.Split(',');
            dictionary.Add(tokens[0], tokens.Skip(1).ToList());
            // listBox1.Items.Add("Url: " + tokens[0] + " --- " 
                + "Localy KeyWord: " + tokens[1]);     
            data = new string[1] { "Url: " + tokens[0] + " --- " 
                + "Localy KeyWord: " + tokens[1]};
            listBox1.DataSource = data;
        }           
    }        
}

Aber es fügt der ListBox nur einmal eine Zeile hinzu. Ich möchte, dass es wie listbox1.Items.Add ist, dann werden alle Zeilen aus der Textdatei zur ListBox hinzugefügt.

Dann färbe ich die Linien in Rot:

private void listBox1_DrawItem(object sender, DrawItemEventArgs e)
{
    e.DrawFocusRectangle();
    e.Graphics.DrawString(data[e.Index], new Font(FontFamily.GenericSansSerif, 8,
        FontStyle.Regular),new SolidBrush(color[e.Index]), e.Bounds);
}

private void listBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
    e.ItemHeight = 16;
}

Wie kann ich alle Zeilen aus dem StreamReader hinzufügen, anstatt Items.Add zu verwenden, aber DataSource zu verwenden?

Wie kann ich in Rot nur das Wort "Url:" einfärben? Ich habe diese Zeile:

data = new string [1] {"Url:" + tokens [0] + "---" + "Localy KeyWord:" + tokens [1]};

Und ich möchte, dass es alle Zeilen aus der Textdatei hinzufügt und jede Zeile nur das Wort "Url:" einfärbt.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage