首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#ComboBox中TextChanged事件不被触发的探究

2012-09-21 
C#:ComboBox中TextChanged事件不被触发的探究ComboBox的TextChanged事件是应用很广的一个事件。该事件会在C

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?

真是令人费解。


转载请注明出处。

热点排行