C# 表示datagridview中的字节数组

C# 表示datagridview中的字节数组,c#,arrays,datagridview,bytearray,bmp,C#,Arrays,Datagridview,Bytearray,Bmp,我在C#中有一个字节数组: 我想在DataGridView中表示它如下(三列-第一列偏移量、第二列大小字节、第三列描述和行是x.bmp中字节数组的元素): 我可以用C#中的DataGridView以这种方式表示字节数组吗?我不是winform的家伙,所以我不知道如何使用DataGridView。 但我能做到这一点: 这只是给你一个想法 private void Form1_Load(object sender, EventArgs e) { byte[]

我在C#中有一个字节数组:

我想在
DataGridView
中表示它如下(三列-第一列偏移量、第二列大小字节、第三列描述和行是
x.bmp
中字节数组的元素):


我可以用C#中的
DataGridView
以这种方式表示字节数组吗?

我不是winform的家伙,所以我不知道如何使用DataGridView。 但我能做到这一点:

这只是给你一个想法

private void Form1_Load(object sender, EventArgs e)
        {
            byte[] offset = { 0, 2, 6, 8, 10, 14, 18, 22, 26 };
            byte[] sizebyte = { 4, 2, 2, 4, 4, 4, 4, 2 };
            string[] description = { "signature", "size BMP", "reserved", "reserved", "offset start image", "must 40", "width", "height" };

            this.dataGridView1.Columns.Add("offset", "offset");
            this.dataGridView1.Columns.Add("sizebyte", "sizebyte");
            this.dataGridView1.Columns.Add("description", "description");
            int i = offset.Length;


                for (int j = 0; j < i; j++)
                {
                    DataGridViewRow row = new DataGridViewRow();
                    row.CreateCells(dataGridView1);
                    row.Cells[0].Value = offset.GetValue(j).ToString();
                    if(j<sizebyte.Length)
                    row.Cells[1].Value = sizebyte.GetValue(j).ToString();
                    if (j < description.Count())
                    row.Cells[2].Value = description.GetValue(j).ToString();
                    dataGridView1.Rows.Add(row);
                }



        }
private void Form1\u加载(对象发送方,事件参数e)
{
字节[]偏移量={0,2,6,8,10,14,18,22,26};
字节[]sizebyte={4,2,2,4,4,4,2};
字符串[]说明={“签名”、“大小BMP”、“保留”、“保留”、“偏移开始图像”、“必须40”、“宽度”、“高度”};
this.dataGridView1.Columns.Add(“offset”、“offset”);
this.dataGridView1.Columns.Add(“sizebyte”、“sizebyte”);
this.dataGridView1.Columns.Add(“description”、“description”);
int i=偏移量长度;
对于(int j=0;j
您不需要读取BMP文件的所有字节

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        UpdateDataGridView();
    }

    private void UpdateDataGridView()
    {
        byte[] bmp = new byte[28];
        List<BMPInfo> InfoList = new List<BMPInfo>();

        using (var fs = new FileStream("D:\\x.bmp", FileMode.Open, FileAccess.Read))
        {
            fs.Read(bmp, 0, bmp.Length);
        }

        InfoList.Add(new BMPInfo
        {
            Offset = BitConverter.ToInt32(bmp, 10),
            Size = BitConverter.ToInt32(bmp, 2),
            Description = "Something"
        });
        dataGridView1.DataSource = InfoList;
    }
}

public class BMPInfo
{
    public long Offset { get; set; }
    public long Size { get; set; }
    public string Description { get; set;}
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
UpdateDagRidView();
}
私有void updateDagDagRidView()
{
字节[]bmp=新字节[28];
列表信息列表=新列表();
使用(var fs=new FileStream(“D:\\x.bmp”,FileMode.Open,FileAccess.Read))
{
fs.Read(bmp,0,bmp.Length);
}
添加(新的BMPInfo)
{
偏移量=位转换器.ToInt32(bmp,10),
大小=位转换器.ToInt32(bmp,2),
Description=“某物”
});
dataGridView1.DataSource=InfoList;
}
}
公共类BMPInfo
{
公共长偏移量{get;set;}
公共长大小{get;set;}
公共字符串说明{get;set;}
}
private void Form1_Load(object sender, EventArgs e)
        {
            byte[] offset = { 0, 2, 6, 8, 10, 14, 18, 22, 26 };
            byte[] sizebyte = { 4, 2, 2, 4, 4, 4, 4, 2 };
            string[] description = { "signature", "size BMP", "reserved", "reserved", "offset start image", "must 40", "width", "height" };

            this.dataGridView1.Columns.Add("offset", "offset");
            this.dataGridView1.Columns.Add("sizebyte", "sizebyte");
            this.dataGridView1.Columns.Add("description", "description");
            int i = offset.Length;


                for (int j = 0; j < i; j++)
                {
                    DataGridViewRow row = new DataGridViewRow();
                    row.CreateCells(dataGridView1);
                    row.Cells[0].Value = offset.GetValue(j).ToString();
                    if(j<sizebyte.Length)
                    row.Cells[1].Value = sizebyte.GetValue(j).ToString();
                    if (j < description.Count())
                    row.Cells[2].Value = description.GetValue(j).ToString();
                    dataGridView1.Rows.Add(row);
                }



        }
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        UpdateDataGridView();
    }

    private void UpdateDataGridView()
    {
        byte[] bmp = new byte[28];
        List<BMPInfo> InfoList = new List<BMPInfo>();

        using (var fs = new FileStream("D:\\x.bmp", FileMode.Open, FileAccess.Read))
        {
            fs.Read(bmp, 0, bmp.Length);
        }

        InfoList.Add(new BMPInfo
        {
            Offset = BitConverter.ToInt32(bmp, 10),
            Size = BitConverter.ToInt32(bmp, 2),
            Description = "Something"
        });
        dataGridView1.DataSource = InfoList;
    }
}

public class BMPInfo
{
    public long Offset { get; set; }
    public long Size { get; set; }
    public string Description { get; set;}
}