读书人

C#ComboBox中TextChanged事件不被触发

发布时间: 2012-09-21 15:47:26 作者: rapoo

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;

从这段代码来看,表达的意思是,在DropDown关闭之后,也就是你选择了一个项之后。

首先执行OnDropDownClosed函数

而OnTextChanged函数的执行则要看3个条件是否都为True。其中一项就包括了FormattingEnabled这个属性。

所以这个属性若没设置成True,通过选择下拉项来改变ComboBox内的文字,是不会触发TextChanged事件的。


在这里我不禁感到奇怪,既然FormattingEnabled属性关系到TextChanged这么基础的一个事件,为何默认值是False而不是True?

真是令人费解。


转载请注明出处。

读书人网 >C#

热点推荐