Копирование ссылки в память из dataGridView

270
29 ноября 2017, 23:19

Есть dataGridView, в котором выведена БД. Хочу, чтобы при двойном щелчке по ячейке открывалось изображение, которое хранится как ссылка в ячейке. Имею код:

    private void dataGridView1_DoubleClick(object sender, EventArgs e)
    {
        var link = dataGridView1.SelectedCells;
        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        pictureBox1.Image = Image.FromFile(link);
    }

Возникает ошибка: Ошибка 2 Аргумент "1": преобразование типа из "System.Windows.Forms.DataGridViewSelectedCellCollection" в "string" невозможно

Подскажите, как правильно написать код.

Попробовал ещё один вартант:

 string p = Convert.ToString(dataGridView1[0, dataGridView1.CurrentRow.Index].Value.ToString());
         pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
         pictureBox1.Image = Image.FromFile(p);

Также не работает.

Answer 1

Вместо события двойного клика по всему гриду, следует использовать событие двойного клика по конкретной ячейке.

private void DataGridView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
    if (e.ColumnIndex == 1) // индекс колонки с линком
    {
        var link = dataGridView[e.ColumnIndex, e.RowIndex].Value.ToString();
        //pictureBox.Load(link);
        //pictureBox.LoadAsync(link);
    }
}

Если значение в ячейке является валидным url'ом, его можно просто передать в метод Load пикчабокса (или LoadAsync, если загрузка будет долгой, например, из интернета).

READ ALSO
Изменение фона приложения на MetroFramework

Изменение фона приложения на MetroFramework

Как изменить фоновый цвет приложения WinForms сделанное с помощью фреймворка MetroFramework ?

249
Не могу найти ошибку (Unity3d)

Не могу найти ошибку (Unity3d)

Как должно все работатьПри свайпах по панели должна вращаться камера

366
Анимирование меню игры в Юнити

Анимирование меню игры в Юнити

Как создать класное меню? что то на подобий этого -

263
Ошибка при использовании кортежей

Ошибка при использовании кортежей

У меня стоит vs15Я взял код из интернета и решил в нём разобраться

209