2014-12-05 32 views
-1

很抱歉,如果不清楚。现在我的代码是这样的:使用字符串作为参数的一部分

IPAddress address = IPAddress.Parse(Properties.Settings.Default.NA); 

我想要做的是用列表框中的选定项目替换NA。我可以通过做

listBox1.SelectedItem.ToString(); 

listBox1中会包含项目,如NA,欧盟,LAN等接入它,我想它,这样我可以做这样的事情

IPAddress address = IPAddress.Parse(Properties.Settings.Default.listBox1.SelectedItem.ToString()); 

,但我不确定它是否会起作用。有人可以建议我解决这个问题吗?

谢谢!

+0

为什么你认为你的ListBox的的SelectedItem将在属性可用,只需尝试:'IPAddress.Parse(listBox1.SelectedItem.ToString());'**还是你想映射值'SelectedItem'到你的设定值**? – Habib 2014-12-05 15:17:51

+0

'Properties.Settings.Default.NA'大概会返回一个字符串,'listBox1.SelectedItem.ToString();'也是。你期望什么'Properties.Settings.Default.listBox1.SelectedItem.ToString()'返回? – 2014-12-05 15:20:17

+0

listBox1.SelectedItem.ToString()返回一个字符串,它与用户设置中的属性相匹配。例如,在列表框中,选定的项目是NA。如果我做Properties.Settings.Default.NA它会返回一个IP地址。因此,我不希望写一些if语句来检查SelectedItem是什么,而是希望能够让它直接返回所选内容。 – Nonono 2014-12-05 15:22:37

回答

0

基于您的评论,我相信你有你的列表框,它映射到一个Properties价值string。在属性中,存在包含IPAddress的实际字符串。

既然你可以访问:Properties.Settings.Default.NA,你也可以访问基于索引的属性,这也是字符串键的名字。因此,使用:

IPAddress address = IPAddress.Parse(
      Properties.Settings.Default[listBox1.SelectedItem.ToString()].ToString()); 

您可以添加一些检查,看看是否你实际上该属性。像:

string listBoxItem = listBox1.SelectedItem.ToString(); 

var valueFromProperty = Properties.Settings.Default[listBoxItem]; 
if (valueFromProperty != null) 
{ 
    IPAddress address = IPAddress.Parse(valueFromProperty.ToString()); 
} 
+0

非常感谢。这很好用!另一件事,在我的程序开始时,我设置我的列表框来添加几个项目。有没有一种方法让listBox根据设置文件中的内容添加项目。所有的设置文件将包含NA/EU/etc和IP地址。 – Nonono 2014-12-05 18:01:41

+0

@Nonono,试试:'lislistBox1.DataSource = Properties.Settings.Default;',它的Winforms对不对? – Habib 2014-12-05 18:04:14

+0

我正在尝试,但这是出现的错误:'在System.Windows.Forms.dll中发生类型'System.ArgumentException'的未处理的异常。其他信息:复杂DataBinding接受IList或IListSource作为数据源。' Winforms是什么意思?我是C#的新手,只是试图通过一些程序来更快地学习它。 – Nonono 2014-12-05 18:34:38

0

最简单的方法是使用枚举作为列表框的数据源:

listBox1.DataSource = Enum.GetValues(typeof(EnumType)); 

,然后选定的项目实际上是枚举值:

EnumType item = (EnumType)listBox1.SelectedItem; 

确保你用你的枚举类型替换EnumType。

1
IPAddress address = IPAddress.Parse(Settings.Default.Properties[listBox1.SelectedItem.ToString()].DefaultValue); 
相关问题