2017-08-27 125 views
0

我有一個CheckedListBox控件,有6個複選框供您選擇。我試圖檢測以下內容:如何從CheckedListBox中獲取當前選定的檢查值?

用戶檢查第三個索引並將該值從未選中更改爲已檢查。 內部:調用事件 - 獲取第三個索引的選中值。

這似乎建議添加一個SelectedIndexChanged事件。那並不告訴我用戶改變了價值。

還有另一種:SelectedValueChanged。

我不知道,告訴我在所有的無論是什麼,因爲函數是:

*_SelectedValueChanged(object sender, EventArgs e) 

EventArgs的是一種無用得到這個需要的信息。

同樣,我只需要獲取用戶剛選擇的項目的選中值。我不想收集所有選定的項目。只是當前選中的一個。謝謝。

+0

哎呀,是我不好。我把它與另一種控制混淆了。你可以使用類似'chkList.Items [chkList.SelectedIndex]'的地方,其中'chkList'是你的CheckedListBox。例如:'Console.WriteLine(chkList.Items [chkList.SelectedIndex] .ToString());'。 –

+0

雖然ToString()給出了該值,但它並不告訴我該項是否被選中。如果我誤認爲字符串值的價值,而原諒我,而我的意思是檢查的價值。儘管如此,瞭解這兩者是有用的 – Phil

+0

查看下面的答案。 –

回答

1

爲了獲得所選擇的項目的顯示值(內容),可以使用類似以下內容:

Console.WriteLine(checkedListBox1.Items[checkedListBox1.SelectedIndex].ToStr‌​ing()); 

或者更短的版本:

Console.WriteLine(checkedListBox1.SelectedItem.ToString()); 

要確定選擇項目被檢查與否,您可以使用類似以下內容:

Console.WriteLine(checkedListBox1.CheckedItems.Contains(checkedListBox1.SelectedItem)); 

Th將檢查選中項目的內容是否可以在檢查項目中找到。如果您的CheckedListBox有重複,那可能會導致錯誤的結果。爲了避免這種情況,你可能檢查索引,而不是價值,像這樣:

Console.WriteLine(checkedListBox1.CheckedIndices.Contains(checkedListBox1.SelectedIndex)); 

編輯:一個更好的解決辦法,我才發現,是使用GetItemChecked方法。像下面的內容將很好地工作:

Console.WriteLine(checkedListBox1.GetItemChecked(checkedListBox1.SelectedIndex)); 

希望幫助:)

+0

使用Contains()只能在項目已被選中時使用。如果我第一次選擇複選框,Contains()似乎返回false。如果我再做一次,它似乎會恢復正確。 – Phil

+0

你確定你確實在檢查複選框*(不只是選擇項目)*嗎?您可能需要查看['CheckOnClick'](https://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.checkonclick(v = vs.110).aspx)屬性。將其設置爲true會通過一次單擊來選中/取消選中項目(選擇項目時)。 –

+0

你問我有關這樣一個房產的問題,我已經過了幾秒鐘。點擊和雙擊是令人困惑的,可能是我的用戶。該財產造成了差異。謝謝! – Phil

相關問題