ListBox.SelectedIndexChanged - can you determine i

2019-07-05 06:06发布

My question is similar to this: How to prevent ListBox.SelectedIndexChanged event?, but I want to ask it a different way.

Is there a simple way to determine if the 'SelectedIndexChanged' is coming from the user as opposed to initiated through code (e.g. ListBox.SelectedIndex = x)?

3条回答
叼着烟拽天下
2楼-- · 2019-07-05 06:20

For me, the 'SelectionChangeCommitted' event was better suited for my purposes. It fires when a selection in the drop down is selected. This is the easiest way to handle the specific case when the end-user initiates the change. SelectedIndexChanged is to capture all cases.

查看更多
Summer. ? 凉城
3楼-- · 2019-07-05 06:20

Property change listeners don't distinguish between causes of a property change. It's a common problem. Setting a flag is the way to do it.

I do wish that there was a way to set values without firing property change events. But then, people argue that it breaks the whole object-oriented model, because it effectively allows you to change a field directly, without using a property.

查看更多
Evening l夕情丶
4楼-- · 2019-07-05 06:28

As far as I know, no, there's no simple way built-in. The best I've been able to do is set a flag just before changing it in code and then letting the event handler reset the flag and return.

I suppose you could start examining the call stack and see if it's originating somewhere in your own code or not, but I'm not sure how much it's worth the effort.

查看更多
登录 后发表回答