Как получить значение изображения ячейки изображения Datagridview

У меня есть сетевое представление с игровым изображением ImageColumn, и если пользователь нажимает значок воспроизведения, то событие CellClick устанавливает изображение "Стоп" из ресурсов.

Private Sub dg1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dg1.CellClick
    dg1.Rows(e.RowIndex).Cells(3).Value = New Bitmap(app1.My.Resources.stop)
End Sub

Но мне нужно, чтобы пользователь нажимал на какое изображение (Play или Stop). Как получить название изображения datagridview для события Cellclick? Я старался

dg1.Rows(e.RowIndex).Cells(3).Value.ToString()

Но вернул значение "System.Drawing.Image" мне нужно значение изображения. Извините за мой плохой английский.

Спасибо за интерес

1 ответ

Решение

Вот как бы я получил изображение. Сначала проверьте, имеет ли ячейка, на которую вы нажали, тип DataGridViewImageCell, Если это так, попробуйте разыграть Value свойство как любой формат изображения вы ожидаете.

    {
        dataGridView1.Columns.Add(new DataGridViewImageColumn());

        BitMap bitMap = new BitMap(5,5); // or however you get it from resources
        bitMap.Tag = "Play"; // Put the name of the image here

        dataGridView1.Rows.Add(bitMap); 
    }

    void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var dgv = sender as DataGridView;
        if (dgv == null)
            return;

        var imageCell = dgv[e.ColumnIndex, e.RowIndex] as DataGridViewImageCell;
        if (imageCell == null)
            return;

        var image = imageCell.Value as Bitmap;
        if (image == null)
            return;

        string name = image.Tag as String;           
    }

В качестве альтернативы, вы можете сохранить растровое изображение как переменную уровня класса:

    Bitmap playBitmap = New Bitmap(app1.My.Resources.play);
    Bitmap stopBitmap = New Bitmap(app1.My.Resources.stop);

затем в CellClick метод:

    void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        var dgv = sender as DataGridView;
        if (dgv == null)
            return;

        var imageCell = dgv[e.ColumnIndex, e.RowIndex] as DataGridViewImageCell;
        if (imageCell == null)
            return;

        if(imageCell.Value == playBitmap) 
        {

        }
        else if (imageCell.Value == stopBitmap)
        {

        }

    }
Другие вопросы по тегам