System.Management Windows 形式的实施将不起作用
System.Management Implementation in Windows Form Won't Work
使用 Visual Studios RC 2017,将其模板用于 .NET Windows 表单应用程序
尝试从我的计算机获取 USB 设备列表,并使用 System.Management 中名为 "GetUSBDevices()" 的函数将其粗略地粘贴到学校项目的 rTextbox 中。
尝试使用我 知道 System.Management 拥有的功能来执行此操作,并且在 Visual Studios C# 控制台应用程序模板中使用时有效,并且出于某种原因它无法识别参考...
我试过了:
通过解决方案资源管理器添加 System.Management 作为参考
重新安装 System.Management 参考
直接从库中调用函数 [System.Management.GetUSBDevices(); ]
到目前为止没有任何效果...
无效的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Management; //ISSUE HERE!
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Manager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void DisplayProcess()
{
richTextBox1.Clear();
Process[] plist = Process.GetProcesses();
foreach (Process p in plist)
{
richTextBox1.Text += "Process " + p.Id.ToString() + " : " + p.ProcessName.ToString() + "\n";
}
}
//-----------------------------------ISSUE HERE-----------------------------
//-----------------------------------ISSUE HERE-----------------------------
//-----------------------------------ISSUE HERE-----------------------------
private void DisplayUSB()
{
richTextBox1.Clear();
var usbDevices = GetUSBDevices();
foreach (var usb in usbDevices)
{
richTextBox1.Text += "USB Device " + usb.DeviceID;
}
}
private void button1_Click(object sender, EventArgs e)
{
switch (button1.Text)
{
case "Start":
button1.Text = "USB";
DisplayProcess();
break;
case "USB":
button1.Text = "Manager";
// DisplayUSB();
break;
case "Manager":
DisplayProcess();
button1.Text = "USB";
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
switch(button1.Text)
{
case "Start":
MessageBox.Show("Please Start The Manager!","REFRESH ERROR");
break;
case "USB":
DisplayProcess();
break;
//case "Manager":
// DisplayUSB();
// break;
}
}
}
}
给出的错误是:
Error CS0103 The name 'GetUSBDevices' does not exist in the current context Manager c:\users\*****\documents\visual studio 2017\Projects\Manager\Manager\Form1.cs 38
错误 CS1579 foreach 语句无法对“?”类型的变量进行操作因为 '?'不包含 'GetEnumerator' Manager c:\users*****\documents\visual studio 2017\Projects\Manager\Manager\Form1.cs 40
的 public 定义
有效的代码(取自 Get List of connected USB Devices 并亲自测试,在我的电脑上运行良好)
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Management;
class Program
{
static void Main(string[] args)
{
var usbDevices = GetUSBDevices();
foreach (var usbDevice in usbDevices)
{
Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
}
Console.Read();
}
}
}
非常感谢我能在这件事上得到的任何帮助,所以它会奏效!
函数 GetUSBDevices()
不在 System.Management
中,而是在您从另一个 SO question 复制的代码中。所以我猜你忘了复制那段代码 ;-).
使用 Visual Studios RC 2017,将其模板用于 .NET Windows 表单应用程序
尝试从我的计算机获取 USB 设备列表,并使用 System.Management 中名为 "GetUSBDevices()" 的函数将其粗略地粘贴到学校项目的 rTextbox 中。
尝试使用我 知道 System.Management 拥有的功能来执行此操作,并且在 Visual Studios C# 控制台应用程序模板中使用时有效,并且出于某种原因它无法识别参考...
我试过了:
通过解决方案资源管理器添加 System.Management 作为参考
重新安装 System.Management 参考
直接从库中调用函数 [System.Management.GetUSBDevices(); ]
到目前为止没有任何效果...
无效的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Management; //ISSUE HERE!
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Manager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void DisplayProcess()
{
richTextBox1.Clear();
Process[] plist = Process.GetProcesses();
foreach (Process p in plist)
{
richTextBox1.Text += "Process " + p.Id.ToString() + " : " + p.ProcessName.ToString() + "\n";
}
}
//-----------------------------------ISSUE HERE-----------------------------
//-----------------------------------ISSUE HERE-----------------------------
//-----------------------------------ISSUE HERE-----------------------------
private void DisplayUSB()
{
richTextBox1.Clear();
var usbDevices = GetUSBDevices();
foreach (var usb in usbDevices)
{
richTextBox1.Text += "USB Device " + usb.DeviceID;
}
}
private void button1_Click(object sender, EventArgs e)
{
switch (button1.Text)
{
case "Start":
button1.Text = "USB";
DisplayProcess();
break;
case "USB":
button1.Text = "Manager";
// DisplayUSB();
break;
case "Manager":
DisplayProcess();
button1.Text = "USB";
break;
}
}
private void button2_Click(object sender, EventArgs e)
{
switch(button1.Text)
{
case "Start":
MessageBox.Show("Please Start The Manager!","REFRESH ERROR");
break;
case "USB":
DisplayProcess();
break;
//case "Manager":
// DisplayUSB();
// break;
}
}
}
}
给出的错误是:
Error CS0103 The name 'GetUSBDevices' does not exist in the current context Manager c:\users\*****\documents\visual studio 2017\Projects\Manager\Manager\Form1.cs 38
错误 CS1579 foreach 语句无法对“?”类型的变量进行操作因为 '?'不包含 'GetEnumerator' Manager c:\users*****\documents\visual studio 2017\Projects\Manager\Manager\Form1.cs 40
的 public 定义有效的代码(取自 Get List of connected USB Devices 并亲自测试,在我的电脑上运行良好)
namespace ConsoleApplication1
{
using System;
using System.Collections.Generic;
using System.Management;
class Program
{
static void Main(string[] args)
{
var usbDevices = GetUSBDevices();
foreach (var usbDevice in usbDevices)
{
Console.WriteLine("Device ID: {0}, PNP Device ID: {1}, Description: {2}",
usbDevice.DeviceID, usbDevice.PnpDeviceID, usbDevice.Description);
}
Console.Read();
}
}
}
非常感谢我能在这件事上得到的任何帮助,所以它会奏效!
函数 GetUSBDevices()
不在 System.Management
中,而是在您从另一个 SO question 复制的代码中。所以我猜你忘了复制那段代码 ;-).