C# 如何转换datagridview列值C中的文件大小#

C# 如何转换datagridview列值C中的文件大小#,c#,winforms,datagridview,C#,Winforms,Datagridview,我正在制作windows应用程序 在我的申请中,工作过程是这样的 在文本框中写入文本,然后单击“开始”按钮 DataGridView中显示的匹配数据 现在我想转换为Datagridview列中的文件大小 例如,在我的数据库中,DBsize值保存在字节foramt中,如下所示:451936256 但是它很难计数,所以在DataGridView中,我想显示如下转换:431MB 我在下面显示了我的按钮点击代码,我该怎么做?请帮帮我 多谢各位 private void btnStart_Click(ob

我正在制作windows应用程序

在我的申请中,工作过程是这样的

  • 在文本框中写入文本,然后单击“开始”按钮

  • DataGridView中显示的匹配数据

  • 现在我想转换为Datagridview列中的文件大小

    例如,在我的数据库中,DBsize值保存在字节foramt中,如下所示:451936256

    但是它很难计数,所以在DataGridView中,我想显示如下转换:431MB

    我在下面显示了我的按钮点击代码,我该怎么做?请帮帮我

    多谢各位

    private void btnStart_Click(object sender, EventArgs e)
            {
                string webApplicationName = string.Empty;
                string siteID = string.Empty;
                mtlblError.Text = "no record returned";
    
                Migration_Status_DAC dac = new Migration_Status_DAC();
                DataSet ds = new DataSet();
    
                try
                {
    
                    ds = dac.SelectWebApplicationStatus(mtextUrl.Text);
                    DataTable dt = ds.Tables[0];
    
    
                    if (ds != null && dt != null && dt.Rows.Count > 0)
                    {
    
                        mgrdWebApplication.DataSource = dt;
                    }
                    else
                    {
                         mtlblError.Visible = true;
                    }
                }
                catch(Exception ex)
                {
                    LogWrite.writeLog(ex.ToString();
                }
            }
    

    您可以使用此函数将字节转换为兆字节

    public double ConvertBytesToMegabytes(long bytes)
    {
        return (bytes / 1024f) / 1024f;
    }
    
    然后在这部分代码中使用它

    webApplicationName =  ConvertBytesToMegabytes(dt.Rows[0]["AppName"].ToString());
    

    我完成了我的代码,来自Reza Aghaei的建议

    首先使用CellFormatting事件

    private void mgrdContentDatabase_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if(this.mgrdContentDatabase.Columns[e.ColumnIndex].HeaderText== "Size(GB)")
        {
            if (e.Value != null)
            {
                CovertFileSize(e);
            }
        }
    }
    
    接下来是转换文件大小的方法

    private void CovertFileSize(DataGridViewCellFormattingEventArgs formatting)
            {
                if (formatting.Value != null)
                {
                    try
                    {
                        long bytes;
                        bytes = Convert.ToInt64(formatting.Value);
                        string size = "0 Bytes";
    
                        //GB
                        if (bytes >= 1073741824.0)
                            size = String.Format("{0:##.##}", bytes / 1073741824.0) + " GB";
                        //MB
                        else if (bytes >= 1048576.0)
                            size = String.Format("{0:##.##}", bytes / 1048576.0) + " MB";
                        //KB
                        else if (bytes >= 1024.0)
                            size = String.Format("{0:##.##}", bytes / 1024.0) + " KB";
                        //Bytes
                        else if (bytes > 0 && bytes < 1024.0)
                            size = bytes.ToString() + " Bytes";
    
                        formatting.Value = size;
                        formatting.FormattingApplied = true;
                    }
                    catch(FormatException)
                    {
                        formatting.FormattingApplied = false;
                    }
                }
    
            }
    
    private void CovertFileSize(DataGridViewCellFormattingEventArgs格式)
    {
    if(formatting.Value!=null)
    {
    尝试
    {
    长字节;
    字节=Convert.ToInt64(formatting.Value);
    字符串大小=“0字节”;
    //国标
    如果(字节>=1073741824.0)
    size=String.Format(“{0:###.###}”,bytes/1073741824.0)+“GB”;
    //MB
    否则如果(字节>=1048576.0)
    size=String.Format(“{0:###.###}”,bytes/1048576.0)+“MB”;
    //KB
    否则如果(字节>=1024.0)
    size=String.Format(“{0:###.##}”,bytes/1024.0)+“KB”;
    //字节
    else if(字节>0&&字节<1024.0)
    size=bytes.ToString()+“bytes”;
    格式化。值=大小;
    formatting.FormattingApplied=true;
    }
    捕获(格式化异常)
    {
    formatting.FormattingApplied=false;
    }
    }
    }
    

    现在,它在我的应用程序中运行良好。

    添加中的一种方法,将字节转换为人类可读的格式。然后处理
    DataGridView
    CellFormatting
    事件,并使用该方法设置
    e.Value
    。谢谢你的回复。我明白你说的话,但这是我第一次使用它。。请你详细解释一下好吗??事件用于指示要用于单元格显示的确切显示值以及单元格样式,例如背景色和前景色。这意味着您可以为任何类型的单元格格式处理此事件,而不管单元格值本身是否需要格式化。谢谢。最后我做到了。我真的很感谢你。别忘了投票支持你用来解决问题的链接问题和答案。