2016-06-28 29 views
0

當用戶從組合框中選擇一個項目時,需要捕獲事件。這裏讀一些答案在計算器上後,我用這個方法 (XAML):組合框事件觸發器即使在用戶未選擇項目時也會發生

SelectionChanged="LocationBox_SelectionChanged" 

而在C#中的事件處理程序:

private void LocationBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 

的問題是,這個事件處理程序是越來越絆倒多次爲ComboBox是動態構建的,而不是在用戶選擇一個項目時。順便說一下,當用戶選擇一個項目時,此方法確實可以正常工作。問題是所有這些無關的事件。

我想只有當用戶從組合框中選擇一個項目時纔會調用事件處理程序。我不希望在組合框被顯示之前動態構建組合框時調用事件處理程序。看來,每次將項目添加到組合框時,它都會觸發事件處理程序。我希望事件處理程序被觸發IFF人類從組合框中進行選擇。

對此提出建議?謝謝。

+0

你還沒有真正描述過這個問題,只是一個症狀。爲什麼這個事件被觸發,你想在這裏實現什麼? –

+0

你還沒有解釋爲什麼它是一個問題。 –

+0

這是一個問題,因爲當它錯誤地報告用戶事件時,我的代碼想對用戶選擇的索引做些什麼。但是,由於用戶實際上沒有選擇任何事件和後續索引,因此導致崩潰的錯誤。 – zetar

回答

0

不確定選擇是否改變信號。 在QComboBox編輯過程中,您總是可以使用QObject: blockSignals

+0

QT?這是在WPF中。 – zetar

+0

錯誤。 apologies @zetar - 將不得不檢查我的過濾器並閱讀標籤:( –

+0

沒有傷害,但讓我困惑。 – zetar

-1

這是一個問題,因爲當它錯誤地報告用戶事件時,我的代碼想對用戶選擇的索引做些什麼。但是,由於用戶實際上沒有選擇任何事件和後續索引,因此導致崩潰的錯誤。

從事件處理函數只是return立即萬一SelectedItem == nullSelectedIndex == -1

+0

SelectedIndex不是返回null,它返回0,-1,0,-1,0,-1 – zetar

+0

這就是我寫的,注意 –

+0

因爲我需要知道用戶是否選擇了項目0.你明白index = 0是一個合法的索引值,對吧? – zetar

相關問題