ManagementObject  disk=new  ManagementObject(  
                                               "win32_logicaldisk.deviceid=\"c:\"");  
                                   disk.Get();  
                                   totalSize.Text=disk["size"].ToString();  
这里有两个问题:  
a.我已经把本地磁盘所有可用分区都加到comboBox中去了,怎么样才能实现用户在comboBox中选择不同的盘符,显示相应的容量?  
b.容量转成MB   

解决方案 »

  1.   

    a.combobox 选择项改变后去读取相应盘符的空间。
    b.写一个函数计算
    public static string ConversionSize(float p_fltSize)
    {
    int m_intCount = 0;
    string m_strUnit;
    //
    //  计算
    //
    ComputeSize(ref p_fltSize,ref m_intCount); //
    //  判断单位s
    //
    switch(m_intCount)
    {
    case 0:
    m_strUnit = "B";
    break;
    case 1:
    m_strUnit = "KB";
    break;
    case 2:
    m_strUnit = "MB";
    break;
    case 3:
    m_strUnit = "GB";
    break;
    default:
    m_strUnit = "";
    break;
    }
    //
    // 取两位小数

    return p_fltSize.ToString(".##") + m_strUnit;
    }
    private static void ComputeSize(ref float p_fltSize,ref int p_intCount)
    {
    if(p_fltSize > 1024.0)
    {
    p_fltSize = p_fltSize / 1024;
    p_intCount++;
    ComputeSize(ref p_fltSize,ref p_intCount);
    }
    }
      

  2.   

    ManagementObject disk = new ManagementObject(
                "win32_logicaldisk.deviceid=\"c:\"");
            disk.Get();
            Console.WriteLine("Logical Disk Size = " + disk["Size"]/1048576 + " M");
      

  3.   

    在comboBox的SelectedIndexChanged事件里写你的程序不可以么?
    把这句的ManagementObject disk=new ManagementObject("win32_logicaldisk.deviceid=\"c:\""); 
    c换成你的盘符不就可以了么?
    disk["size"]是byte
    byte转换K转换M应该不难吧?直接除就行了,10241024啊
      

  4.   

    string length=Convert.toInt32(disk["Size"]);
    string Size=length/1048576;
    Console.WriteLine("Logical Disk Size = " + Size + " M");
      

  5.   

    TO:lovefootball(蟑螂) 
    我這樣寫不行:
    string S=comboBox.text
    ManagementObject disk=new ManagementObject("win32_logicaldisk.deviceid=\S"); 
      

  6.   

    要么设置一个对应关系,然后再用ManagementObject