说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请教:调用出错,请各位进来看看,指点指点,谢谢---

编辑:说三道四文库 发布时间:2018-06-24 07:33
HTML文档下载 WORD文档下载 PDF文档下载
页面中有几个标签,用来显示机器的Mac地址、Cpu序列号、硬盘ID,其中Mac地址能正常显示,但Cpu序列号、硬盘ID调用出错,请问哪里有问题?怎么修改代码?错误提示分别是:
编译器错误消息: CS0117: “Computer”并不包含“cpuInfo”的定义
行 20:         this.LbCpu.Text = pc.cpuInfo.ToString();

编译器错误消息: CS0117: “Computer”并不包含“HDid”的定义
行 21:         this.LbHd.Text = pc.HDid.ToString();



调用部分:
        Computer pc = new Computer();
        this.LbMac.Text = pc.MacAddress;
        this.LbCpu.Text = pc.cpuInfo.ToString();
        this.LbHd.Text = pc.HDid.ToString();
类部分Computer.cs:(网上找的)
using System.Management;
public class Computer
{
    public string CpuID;
    public string MacAddress;
    public string DiskID;
    public string IpAddress;
    public string LoginUserName;
    public string ComputerName;
    public string SystemType;
    public string TotalPhysicalMemory; //单位:M
    private static Computer _instance;
    public static Computer Instance()
    {
        if (_instance == null)
            _instance = new Computer();
        return _instance;
    }
    public Computer()
    {
        CpuID = GetCpuID();
        MacAddress = GetMacAddress();
        DiskID = GetDiskID();
        IpAddress = GetIPAddress();
        LoginUserName = GetUserName();
        SystemType = GetSystemType();
        TotalPhysicalMemory = GetTotalPhysicalMemory();
        ComputerName = GetComputerName();
    }
    string GetCpuID()
    {
        try
        {
            //获取CPU序列号代码
            string cpuInfo = "";//cpu序列号
            ManagementClass mc = new ManagementClass("Win32_Processor");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
            }
            moc = null;
            mc = null;
            return cpuInfo;
        }
        catch
        {
            return "unknow";
        }
        finally
        {
        }
    }
   string GetDiskID()
    {
        try
        {
            //获取硬盘ID
            String HDid = "";
            ManagementClass mc = new ManagementClass("Win32_DiskDrive");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                HDid = (string)mo.Properties["Model"].Value;
            }
            moc = null;
            mc = null;
            return HDid;
        }
        catch
        {
            return "unknow";
        }
        finally
        {
        }
    }
    string GetMacAddress()
    {
        try
        {
            //获取网卡硬件地址
            string mac = "";
            ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
            ManagementObjectCollection moc = mc.GetInstances();
            foreach (ManagementObject mo in moc)
            {
                if ((bool)mo["IPEnabled"] == true)
                {
                    mac = mo["MacAddress"].ToString();
                    break;
                }
            }
            moc = null;
            mc = null;
            return mac;
        }
        catch
        {
            return "unknow";
        }
        finally
        {
        }
    }

..........
 
楼主真强,你要发也把代码发全了啊
这个类网上转载的很多,贴的长了怕大家看着嫌长,就把IP及计算机名字检测的部分去掉了,那两项跟着类似。
见有的转载的里面也是这样调用的,结果我试了是这样的:
调用部分:
  
Computer pc = new Computer();
  this.LbMac.Text = pc.MacAddress;//可以显示出mac地址
  this.LbCpu.Text = pc.cpuInfo.ToString();//这里提示错误:编译器错误消息: CS0117: “Computer”并不包含“cpuInfo”的定义

  this.LbHd.Text = pc.HDid.ToString();//这里提示错误:编译器错误消息: CS0117: “Computer”并不包含“HDid”的定义
我回去试试
mark!
当你输入pc.   智能提示里面有吗?
谢谢LCL_data,明白了,
谢谢,结贴。
你的程序到底是什么?
引用 6 楼 lcl_data 的回复:
你的程序到底是什么?

你的程序的问题到底是什么?
问的是:
this.LbCpu.Text = pc.cpuInfo.ToString();//
  this.LbHd.Text = pc.HDid.ToString();//
这两个为什么不能调用成功,谢谢你,还在关注。
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘