2014-12-05 38 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); 
相關問題