Есть много способов сделать это, но вот быстрый и грязный пример (отладка может быть необходима, так как я написал это на лету). [ Редактировать : теперь использует объекты Uri для формулирования фактического адреса.]
private void export_Click(object sender, RoutedEventArgs e)
{
string tempFileName = "list.html";
string links = "http://www.google.com/#sclient=psy&hl=en&site=&source=hp&q=test+me&aq=f&aqi=&aql=&oq=&gs_rfai=&pbx=1&fp=ddfbf15c2e2f4021\nhttp://www.testme.com/Test-Prep.html?afdt=Q3RzePF0jU8KEwja-5WM7PqkAhUUiZ0KHaoG_wcYASAAMJbwoAM4MEC4w6uX7dS53gdQlvCgA1CEra8PUJzr_xNQg73wFVCKttweUJStzNoBUNv67ZsD";
List<Uri> uriCollection = new List<Uri>();
foreach (string url in links.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries))
{
uriCollection.Add(new Uri(url));
}
// Create temporary file.
using (TextWriter writer = new StreamWriter(tempFileName))
{
try
{
writer.WriteLine("<html>");
writer.WriteLine("<head><title>Links</title></head>");
writer.WriteLine("<body>");
writer.WriteLine("<p>");
foreach (Uri uri in uriCollection)
{
writer.WriteLine("<a href=\"{0}\">{1}</a><br />", uri.OriginalString, uri.Host);
}
writer.WriteLine("</p>");
writer.WriteLine("</body>");
writer.WriteLine("</html>");
}
catch (Exception ex)
{
System.Diagnostics.Trace.TraceError(ex.Message);
}
finally
{
writer.Close();
}
}
// Open browser with temporary file.
if (File.Exists(tempFileName))
{
System.Diagnostics.Process.Start(tempFileName);
}
}
Кнопка «Экспорт» привязана к событию «export_Click». Я жестко закодировал строку с '\ n' для примера. Просто разбейте их на части, используя split, и напишите временный файл, создавая необходимый вам HTML. Затем, как только файл будет завершен, вы можете открыть его с помощью метода Process.Start ().
В идеале это можно сделать с помощью DataBinding и других элементов, доступных в WPF, если не требовалось открывать окно браузера. Это также удалит все внешние зависимости, которые может иметь программа.