【问题标题】:Getting selected item from Combobox and setting tag value从组合框中获取所选项目并设置标签值
【发布时间】:2020-04-05 07:07:28
【问题描述】:

对于我的应用程序,用户可以使用组合框选择他们想要连接的首选 WiFi 接入点。我正在尝试将 Combobox 中的选定项目转换为要与 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 selectedItem = (ComboBox)cbWifiname.SelectedItem。您在此处添加的项目类型是什么,是类还是字符串?
  • 这是被填充到组合框中的字符串
  • 代替字符串使用一个类,让我写一个答案。
  • 我正在使用 foreach 循环将 WiFi AP 添加到组合框中
  • foreach(接入点接入点接入点接入点)

标签: c# combobox simplewifi


【解决方案1】:

请注意,组合框有一个键值对,看看这个 How to set selected value from Combobox?

希望对你有帮助!

【讨论】:

  • 那么我是否必须使用键值对来保存从 ComboBox 中选择的值
【解决方案2】:

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

ComboBoxItem selectedItem = ((ComboBox)cbWifiname).SelectedItem;

或者如果你真的想把它作为一个字符串:

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

【讨论】:

  • 如果我尝试这个解决方案,我的 ap1 = (AccessPoint)selectedItem.Tag 下面的下一行会显示错误消息“字符串不包含标签的定义”
  • @SahilBora 我给出的第二个示例返回字符串。问题是,你真的需要一个字符串还是你的代码需要什么。 “AccessPoint”类看起来不像接受字符串。
【解决方案3】:

假设您的项目是这样的类:

public class Wifi
{
     public string Name { get; set;}
     public AccessPoint { get; set;}
     //....
}

使显示成员成为您要显示的属性:

cbWifiName.DisplayMember = "Name";

像这样添加到 ComboBox:

cbWifiName.Items.Add(new Wifi{ Name = "SomeName", AccessPint = somevalue});

现在你可以得到它:

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

【讨论】:

    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 2014-02-06
    • 2013-11-16
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多