C#:ComboBox中TextChanged事件不被触发的探究
ComboBox的TextChanged事件是应用很广的一个事件。该事件会在ComboBox的编辑框内文字发生改变的时候触发。
但是有一次在项目里,当我选择了ComboBox的下拉项的时候,它神奇的没有被触发。
重现的方式也很简单。先新建一个类,写一个这样的控件。
case NativeMethods.CBN_CLOSEUP: OnDropDownClosed(EventArgs.Empty); if (FormattingEnabled && Text != currentText && dropDown) { OnTextChanged(EventArgs.Empty); } dropDown = false; break;
首先执行OnDropDownClosed函数
而OnTextChanged函数的执行则要看3个条件是否都为True。其中一项就包括了FormattingEnabled这个属性。
所以这个属性若没设置成True,通过选择下拉项来改变ComboBox内的文字,是不会触发TextChanged事件的。
在这里我不禁感到奇怪,既然FormattingEnabled属性关系到TextChanged这么基础的一个事件,为何默认值是False而不是True?
真是令人费解。
转载请注明出处。