duilib 修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug

转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/43484589

       

        今天群里一个网友向我反应combo控件的一个bug:单击combo控件,展开下拉菜单后,不会自动定位到上次选择的位置,而是定位到最开头的位置。

       带有bug的效果图:                                                               修复后的效果图:

                              
                                                    

       其实combo控件的下拉菜单是一个窗体,类名为CComboWnd,在他的初始化函数Init中已经得到了上次选择的项目的索引并保存到m_iOldSel变量中。所以只要使用这个变量,来初始化CComboWnd窗体的滚动条的位置就可以了。CComboWnd类中已经有了重定位函数EnsureVisible,所以在合适的时候调用这个函数就可以了。

      EnsureVisible函数需要得到上次选择项的控件的位置来初始化滚动条,而所有控件的初始化后会发送windowinit消息。所以需要做的解释给CComboWnd类继承INotifyUI接口,并且将CComboWnd添加到通知队列里,最后在windowinit消息里调用EnsureVisible函数就可以了。

修复步骤:

      

      1、给CComboWnd类继承INotifyUI接口

      2、为CComboWnd类添加 void Notify(TNotifyUI& msg) ; 成员函数

      3、在WM_CREATE消息里,把CComboWnd添加到消息队列:

m_pm.AddNotifier(this);

      4、在Notify函数添加如下代码:

void CComboWnd::Notify(TNotifyUI& msg)
{
	if (msg.sType == _T("windowinit"))
	{
		EnsureVisible(m_iOldSel);
	}
}

总结:

       

        修复后的代码已经更新到我的库里:点击打开链接

Redrain 2015.2.4

时间: 2024-11-18 19:03:31

duilib 修复combo控件打开下拉菜单后不会自动定位到上次选择的位置上的bug的相关文章

工具条组合combo控件,下拉控件中的显示字体可以自定义么?

问题描述 工具条组合combo控件,下拉控件中的显示字体可以自定义么? 工具条组合combo控件,下拉控件中的显示字体可以自定义么?怎么让字体设置为所显示的文字的字体呢? 解决方案 有一个叫做fontcombo的第三方控件直接就支持了.

利用.net控件实现下拉导航菜单制作的具体方法

这篇文章介绍了利用.net控件实现下拉导航菜单制作的具体方法,有需要的朋友可以参考一下,希望对你有所帮助   今天的一个小测试是老师让用.NET用控件来制作一个拉菜单要求如下: 将鼠标移到父菜单上弹出3个子菜单,而且每个子菜单都有超链接. 以下是我自己做的代码: 复制代码 代码如下:     <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" Width="10

C#控件lookupedit下拉框里实现省市县三级联动怎么实现

问题描述 C#控件lookupedit下拉框里实现省市县三级联动怎么实现 想要在lookupedit下拉框里实现省市县地址的三级联动怎么实现呢? 解决方案 http://blog.csdn.net/jintougao/article/details/26479263

Qt qml中listview 列表视图控件(下拉刷新、上拉分页、滚动轴)_Android

Qt qml listview下拉刷新和上拉分页主要根据contentY来判断.但要加上顶部下拉指示器.滚动条,并封装成可简单调用的组件,着实花了我不少精力:) 先给大家展示下效果图: [功能] 下拉刷新和上拉分页逻辑 /下拉刷新 /上拉更多 /滚动栏 /工具栏半拉显隐 Author: surfsky.cnblogs.com Lisence: MIT 请保留此文档声明 History: init. surfsky.cnblogs.com, 2015-01 add initPosition pro

Asp.Net用户控件添加下拉属性方法

①新建一个WebUserControl1.ascx用户控件,为了简单,我们就直接在该控件中放一个DropDownList控件.如果我们不为WebUserControl1.ascx控件添加任何属性,在该控件外是不能够为DropDownList控件添加下拉项的. ②现在我们为WebUserControl1.ascx控件添加一个Items属性,它直接映射DropDownList的Items属性,属性如下:    代码如下 复制代码    public ListItemCollection Items

asp.net 控件制作下拉导航菜单

asp教程.net 控件制作下拉导航菜单 今天的一个小测试是老师让用.NET用控件来制作一个拉菜单要求如下: 将鼠标移到父菜单上弹出3个子菜单,而且每个子菜单都有超链接. 以下是我自己做的代码: <asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" Width="100%"         Font-Size="14px" ForeC

duilib修复ActiveXUI控件bug,以支持flash透明动态背景

转载请说明原出处,谢谢~~           昨天在QQ控件里和同学说起QQ2013登陆窗体的开发,从界面角度考虑,单单一个登陆界面是很容易做出来的.腾讯公司为了防止各种盗号行为可谓煞费苦心,QQ2013采用了动态背景就是为了防止界面型盗号木马,这种盗号木马做起来很简单,容易骗过很多电脑小白.而采用动态背景后就加大了这种木马的开发难度.           在Duiengine界面库中,已经有高手做出来一个高仿QQ界面的Demo.其中的登陆窗体只要使用flash做背景就可以了.在duilib中

Word2013中利用控件制作下拉选择按钮

  案例阐述了如何通过控件在Word中制作下拉选择按钮.例如,在性别列中制作"男"和"女"下拉选择,方便输入.下面,小编以最新版的Word2013为例,来介绍一下下拉选择按钮的制作. ①启动Word2013,首先绘制出一个3行4列的表格,输入一些文字信息,我们要在性别右侧的单元格内设置一个可供选择的下拉按钮,将光标移动到此单元格,点击菜单栏--开发工具,选择控件功能组里面的"下拉内容列表控件". ②此时性别右侧的单元格就插入了我们刚添加的&quo

使用Word2013控件制作下拉选择按钮

  第一步: 启动Word2013,首先绘制出一个3行4列的表格,输入一些文字信息,我们要在性别右侧的单元格内设置一个可供选择的下拉按钮,将光标移动到此单元格,点击菜单栏--开发工具,选择控件功能组里面的"下拉内容列表控件". 第二步: 此时性别右侧的单元格就插入了我们刚添加的"下拉内容列表控件".我们单击菜单栏--"开发工具",控件功能组里面的属性按钮,进行相关设置. 第三步: 弹出内容控件属性对话框,首先我们修改标题,输入"请下拉选