как открыть ссылку c#

607
17 июля 2017, 13:28

подскажи такой вопрос, есть папки с ссылками на сайты, как мне её распарсить и перенести в wpf или windows form как кнопки, чтобы при нажатии на кнопку он открывал файл который взял из указанной папки ? или хотя натолкните на мыслить как это можно реализовать ?

Answer 1

В WinForms можно так: Создадим метод, который возвращает Url из файла ссылки:

private string GetUrl(string fileName)
{
    if (!File.Exists(fileName))
        return null;
    var lines = File.ReadAllLines(fileName)?.Where(r => r.ToLower().Replace(" ", "").StartsWith("url=")).FirstOrDefault()?.Split('=');
    if (lines != null && lines.Count() > 0)
        return lines[1];
    else
        return null;
}

Создадим метод, который создает Button с методом BtnClick:

private void createButton(string caption, string url)
{
    Button newButton = new Button();
    newButton.Text = caption;
    newButton.Tag = url;
    newButton.Click += btnClick;
    flowLayoutPanel1.Controls.Add(newButton);            
}
private void btnClick(object sender,EventArgs e)
{
    var url = (sender as Button).Tag.ToString();
    Process.Start(url);
}

А теперь по клику на буттон:

private void button1_Click(object sender, EventArgs e)
{
    DirectoryInfo di = new DirectoryInfo(@"d:\abc");
    int i = 1;
    foreach(FileInfo fi in di.GetFiles())
    {
        if (fi.Extension == ".url")
        {
            var url = GetUrl(fi.FullName);
            var caption = string.Format("link{0}", i);                    
            createButton(caption, url);
            i++;
        }
    }
}

В принципе, можно обойтись и без метода GetUrl и открывать прямо файлы, а не содержащиеся в них ссылки:

private void button1_Click(object sender, EventArgs e)
{
    DirectoryInfo di = new DirectoryInfo(@"d:\abc");
    int i = 1;
    foreach(FileInfo fi in di.GetFiles())
    {
        if (fi.Extension == ".url")
        {
            var url = fi.FullName;
            var caption = string.Format("link{0}", i);                    
            createButton(caption, url);
            i++;
        }
    }
}
READ ALSO
Неправильная работа оператора в Unity

Неправильная работа оператора в Unity

Оператор должен работать так: если случайное число будет равно нулю (0), то вложенный оператор увеличивает значение переменной timeRemaining до 40, если...

245
C# Отличить одну флешку от другой

C# Отличить одну флешку от другой

Стоит задача засечь подключение определенной флешки к устройству и копировании туда данных

298
“Открыть с помощью” моей программы. Как сделать?

“Открыть с помощью” моей программы. Как сделать?

В Windows при двойном клике на фото открывается программа для просмотра фотографийКак мне сделать это в своей программе? Чтобы при двойном клике...

248
Потоковая передача HTML5 video (.webm) на rtmp сервер (.flv)

Потоковая передача HTML5 video (.webm) на rtmp сервер (.flv)

ЗдравствуйтеВстала задача записывать видео из браузера и передавать на rtmp сервер

328