2016-06-28 24 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

相关问题