我正在尝试创建一个适用于USB设备的程序。我遇到的问题是我有listbox
包含计算机中每个连接的USB设备。当您选择设备时,我想打开一个新表单Device_Options
,它位于自己的分部类中。现在,当我尝试从selectedDevice
到Devices
获取设备的名称Device_Options
时,值会重置,我会得到一个空字符串。我的两个类的代码如下:
Devices
public partial class Devices : Form
{
public string selectedDevice;
public Devices()
{
InitializeComponent();
}
private void Devices_Load(object sender, EventArgs e)
{
DriveInfo[] loadedDrives = DriveInfo.GetDrives();
foreach (DriveInfo ld in loadedDrives)
{
if (ld.IsReady == true)
{
deviceListBox.Items.Add(ld.Name + " "+ ld.VolumeLabel + " "+ ld.DriveFormat);
}
}
}
private void refreshButton_Click(object sender, EventArgs e)
{
this.Close();
new Devices().Show();
}
private void backButton_Click(object sender, EventArgs e)
{
this.Close();
}
public void deviceSelectButton_Click_1(object sender, EventArgs e)
{
string itemSelected = "0";
if (deviceListBox.SelectedIndex != -1)
{
itemSelected = deviceListBox.SelectedItem.ToString();
deviceListBox.SelectedItem = deviceListBox.FindString(itemSelected);
selectedDevice = deviceListBox.GetItemText(deviceListBox.SelectedItem).ToString();
//selectedDevice value should be passed to Device_Options
new Device_Options().Show();
}
else
{
MessageBox.Show("Please Select a Device");
}
}
}
然后是我的另一课,Device_Options
:
public partial class Device_Options : Form
{
Devices devices = new Devices();
public string deviceSettings;
public Device_Options()
{
InitializeComponent();
deviceLabel.Text = devices.selectedDevice;
}
我浏览了整个网络,我发现了类似的问题,但似乎没有什么对我有用。如果有人能指出我正确的方向来使这项工作,任何帮助将不胜感激。谢谢:))
答案 0 :(得分:0)
这不是因为部分课程。您必须通过构造函数或属性将所选设备传递给Device_Options
类。
public partial class Device_Options : Form
{
public Device_Options()
{
InitializeComponent();
deviceLabel.Text = devices.selectedDevice;
}
public Device_Options(Device selectedDevice)
{
InitializeComponent();
deviceLabel.Text = selectedDevice;
}
}
在设备上
请致电如下,
new Device_Options(selectedDevice).Show();
答案 1 :(得分:0)
问题是你实际上没有传递任何价值。 Devices
表单的当前实例未在Device_Options
表单中使用 - 您正在创建新表单Devices devices = new Devices();
类中的Device_Options
。
然后您没有将所选值传递给选项表单。传递Devices
作为父级并选择值:
private readonly Devices _parent;
public Device_Options(Devices parent)
{
InitializeComponent();
_parent = parent;
deviceLabel.Text = _parent.selectedDevice;
}
答案 2 :(得分:0)
似乎一切都按照我的预期运作,你确定你理解偏分类的概念吗?
只要您执行new Device_Options().Show()
,Device_Options
就会创建一个新的,不同的 Devices
实例,当然selectedDevice
设置为Devices
空串!
E.g。将Device_Options
实例传递给public partial class Device_Options : Form
{
readonly Devices devices;
public string deviceSettings;
public Device_Options(Devices host)
{
InitializeComponent();
this.devices = host;
deviceLabel.Text = devices.selectedDevice;
}
的构造函数:
new Device_Options(this).Show();
然后致电
{{1}}