因此,让我为您简要介绍一下所有内容:
第一部分只是获取驱动器大小信息
Sizer 是一个返回数组的类
数组包含(大小转换为 4 位、大小标签、原始大小)我将代码粘贴在底部以便更好地理解
标签只是显示尺寸的标签
现在,我只是在内心深处知道,有一种更有效的方法可以做到这一点,而我脑子里放了个屁,想不通。必须有一种方法可以通过循环来执行此操作,或者这真的是完成此操作的最佳方法吗?
private void driveList_SelectedIndexChanged(object sender, EventArgs e)
{
DriveInfo wow = therehasgottobeanotherway[driveList.SelectedIndex];
if (wow.IsReady)
{
//get drive sizes
long tot = wow.TotalSize;
long free = wow.TotalFreeSpace;
long aval = wow.AvailableFreeSpace;
sizer totSize = new sizer(tot);
sizer freeSize = new sizer(free);
sizer avalSize = new sizer(aval);
String[] tots = totSize.getSizeStringType();
String[] frees = freeSize.getSizeStringType();
String[] avals = avalSize.getSizeStringType();
totalSizeLabel.Text = tots[0] + tots[1];
freeSizeLabel.Text = frees[0] + frees[1];
avalSizeLabel.Text = avals[0] + avals[1];
driveName.Text = wow.VolumeLabel;
}
else
{
driveName.Text = "Drive Not Ready";
}
}
using System;
namespace compy
{
internal class sizer
{
private long fSize;
private String[] fSizer = new String[3];
public sizer(long fs)
{ fSize = fs; }
public String[] getSizeStringType()
{
fSizer[2] = Convert.ToString(fSize);
if (fSize > 0 && fSize < 1024)
{
fSizer[0] = Convert.ToString(fSize);
fSizer[1] = " Bytes";
}
else if (fSize > 1024 && fSize < 1048576)
{
fSizer[0] = Convert.ToString(fSize / 1000);
fSizer[1] = " Kilobytes";
}
else if (fSize > 1048576 && fSize < 1073741824)
{
fSizer[0] = Convert.ToString(fSize / 1000 / 1000);
fSizer[1] = " Megabytes";
}
else if (fSize > 1073741824 && fSize < 1099511627776)
{
fSizer[0] = Convert.ToString(fSize / 1000 / 1000 / 1000);
fSizer[1] = " Gigabytes";
}
else if (fSize > 1099511627776 && fSize < 1.1259e15)
{
fSizer[0] = Convert.ToString(fSize / 1000 / 1000 / 1000);
fSizer[1] = " Terabyte";
}
return fSizer;
}
}
}