C# 从组合框中获取选定项并设置标记值

C# 从组合框中获取选定项并设置标记值,c#,combobox,simplewifi,C#,Combobox,Simplewifi,对于我的应用程序,用户可以使用组合框选择他们想要连接的首选WiFi接入点。我正在尝试将组合框中的选定项转换为要与SimpleWifi库一起使用的字符串值 这是我尝试的解决方案: ComboBox selectedItem = (ComboBox)cbWifiname.SelectedItem; AccessPoint ap = (AccessPoint)selectedItem.Tag; 我试图遵循的示例代码解决方案 ListViewItem selecteditem = listView2.

对于我的应用程序,用户可以使用组合框选择他们想要连接的首选WiFi接入点。我正在尝试将组合框中的选定项转换为要与SimpleWifi库一起使用的字符串值

这是我尝试的解决方案:

ComboBox selectedItem = (ComboBox)cbWifiname.SelectedItem;
AccessPoint ap = (AccessPoint)selectedItem.Tag;
我试图遵循的示例代码解决方案

ListViewItem selecteditem = listView2.SelectedItems[0];
AccessPoint ap = (AccessPoint)selecteditem.Tag;

但是,我尝试使用组合框解决方案的结果是,出现了一个调试错误,显示“无法将'System.String类型的对象强制转换为'System.Windows.Forms.combobox'”

请注意,组合框有一个键、值对,请查看此错误


希望有帮助!

我认为您将selectedItem转换为类型Combobox,而它实际上是一个ComboBoxItem。也许这会有帮助:

ComboBoxItem selectedItem = ((ComboBox)cbWifiname).SelectedItem;
或者如果您真的想将其作为字符串:

string selectedItem = ((ComboBox)cbWifiname).SelectedItem.ToString();

假设您的项目是一个类,如:

public class Wifi
{
     public string Name { get; set;}
     public AccessPoint { get; set;}
     //....
}
使显示成员成为要显示的属性:

cbWifiName.DisplayMember = "Name";
添加到组合框,如:

cbWifiName.Items.Add(new Wifi{ Name = "SomeName", AccessPint = somevalue});
现在您可以像这样获得它:

Wifi selected = (Wifi)cbWifiName.SelectedItem;
AccessPoint ap = selected.AccessPoint;

SelectedItem是无法强制转换为combobox的对象,此行不正确
combobox SelectedItem=(combobox)cbWifiname.SelectedItem
。您添加的项目类型是什么,是类还是字符串?填充到comboboxforeach中的是字符串而不是字符串使用类,让我写一个答案。我使用foreach循环将WiFi ap添加到ComboxForEach(ap中的接入点ap)因此,我是否必须使用键、值对来保存从ComboBox中选择的值如果我尝试此解决方案,我下面的ap1=(AccessPoint)selectedItem.Tag下一行显示一个错误,表示“字符串不包含标记的定义”“@SahilBora我给出的第二个示例返回字符串。问题是,您真的需要字符串还是代码需要什么。类“AccessPoint”看起来不像是接受字符串。