我創建了一個自定義UserControl
。它裏面有它的初始化過程中充滿了枚舉值的ComboBox
:比較兩個枚舉值轉換爲對象
m_ComboBox.Items.AddRange((Object[])Enum.GetValues(typeof(Categories)));
因爲我想保留以前ComboBox.SelectedItem
的軌道,我創建了我保存其最後的值的變量:
private Object m_LastCategory;
private void ComboBoxSelectedIndexChanged(Object sender, EventArgs e)
{
if (m_ComboBox.SelectedItem != m_LastCategory)
DoSomething();
m_LastCategory = m_ComboBox.SelectedItem;
}
if語句未按預期工作。其實,即使m_LastCategory
和當前SelectedItem
是不同的(我知道它肯定),它總是返回true
。
我知道,我可以簡單地將兩個變量都返回枚舉,然後比較它們是否獲得正確的結果。但我使用Object
是爲了避免不斷的對值進行裝箱/取消裝箱,並讓我的代碼更加優雅。所以我想知道是否有辦法解決這個問題。
的我發現迄今唯一的工作方法是這樣:
if (m_ComboBox.SelectedItem.ToString() != m_LastCategory.ToString())
,我仍然不知道它的前進的正確道路。