简体   繁体   English

如何获取Datagridview图像单元的图像值

[英]How to get image value of Datagridview Image Cell

I have an datagridview with play image ImageColumn and if user click play icon then CellClick Event set " Stop " image from Resources. 我有一个带有播放图像ImageColumn的datagridview,如果用户单击播放图标,则CellClick Event从资源中设置“ Stop ”图像。

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

But i need get user what image click (Play or Stop) How to get datagridview image name for Cellclick event? 但我需要让用户单击什么图像(播放或停止)(如何获得Cellclick事件的datagridview图像名称)? I tried 我试过了

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

But returned " System.Drawing.Image " value i need image value. 但是返回的“ System.Drawing.Image ”值我需要图像值。 Sorry for my bad english. 对不起,我的英语不好。

Thanks for interest 感谢您的关注

This is how I would get the image. 这就是我要获得图像的方式。 First check if the cell you click is of type DataGridViewImageCell . 首先检查您单击的单元格是否为DataGridViewImageCell类型。 If it is, try casting the Value property as whatever image format you are expecting. 如果是这样,请尝试将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;           
    }

Alternatively, you could save the bitmap as a class level variable: 另外,您可以将位图另存为类级变量:

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

then in the CellClick method: 然后在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)
        {

        }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM