找回密码
 立即注册

QQ登录

只需一步,快速开始

ghostlyt

初级会员

18

主题

76

帖子

214

积分

初级会员

积分
214

活字格认证微信认证勋章

ghostlyt
初级会员   /  发表于:2016-1-21 20:48  /   查看:5040  /  回复:3
版本:Spread For Windows Forms 7.0J
现象:
即使将CellType的AutoSearch设为None,
在ComboBox中输入某项目的首字母时仍然会触发ComboSelChange事件。

从调用堆栈上看,
似乎是在FpCombo控件的OnEditKeyPress方法中调用A方法(混淆后的方法,传入的是Key值和AutoSearch值)时,
AutoSearch的值不是设定的None而是MultipleCharacter。


问题:
怎么避免这个现象?

需求是只有从下拉列表选择某项或者用上下方向键切换选择项时才要触发ComboSelChange事件,
对输入内容进行编辑时不要触发。

3 个回复

倒序浏览
gw0506
超级版主   /  发表于:2016-1-22 10:16:00
沙发
用DropDown和CloseUp加个锁,区分是编辑还是鼠标选择。

  1.         private bool _selectByMouse = false;

  2.         private void fpSpread1_ComboSelChange(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
  3.         {
  4.             if (this._selectByMouse)
  5.             {
  6.                 Console.WriteLine("comblselchanged");
  7.             }
  8.         }

  9.         private void fpSpread1_ComboDropDown(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
  10.         {
  11.             this._selectByMouse = true;
  12.         }

  13.         private void fpSpread1_ComboCloseUp(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
  14.         {
  15.             this._selectByMouse = false;
  16.         }
复制代码
回复 使用道具 举报
ghostlyt
初级会员   /  发表于:2016-1-23 16:39:00
板凳
回复 2楼gw0506的帖子

这么做的话,
第一点:下拉列表打开时输入文字仍然会触发;
第二点:下拉列表未打开时按上下键,该走的处理却不会走了。
回复 使用道具 举报
gw0506
超级版主   /  发表于:2016-1-25 09:47:00
地板
看来绕不过去了,我们已经按照bug(194620)提交产品组确认。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部