开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 4068|回复: 0

[vb.net]动态添加recent item

[复制链接]

0

精华

0

贡献

0

赞扬

帖子
12
软币
133
在线时间
10 小时
注册时间
2014-2-19
发表于 2015-12-15 16:36:30 | 显示全部楼层 |阅读模式
新版15.2里新添加了recentitemcontrol(ric)这个控件,这个控件能实现office打开菜单里的文件列表,包括选项卡和置顶等功能。类似于下图
直接从工具箱拖过来就可以,添加各项相当简单。问题难就难在如何动态添加这些项。demo里只有一个案例,在Ribbon Simple Pad,里面用到了ric,也是run-time design,翻了下代码太多了懒得看,官网无帮助,讨论也很少,就自己研究了一下,略成功。
图右边是一个个的recentpinitem,单击后会触发itemclick。End-users can click this pin button at runtime, which fires the RecentPinItem.PinButtonCheckedChanged event and toggles the boolean RecentPinItem.PinButtonChecked property(懒得翻)。添加的代码如下:


我从数据库里得到datatable,按是否pin排序,略


[Visual Basic .NET] 纯文本查看 复制代码
Dim pinitem As New RecentPinItem
pinitem.Caption = .Item("name").ToString                          '将caption 和 description赋值
                    pinitem.Description = .Item("description").ToString
                    If CInt(.Item("pin").ToString) = 1 Then                               ’我这里判断是否置顶了
                        pinitem.PinButtonChecked = True
                        Form_main.RecentTabItem_All.TabPanel.Items.Add(pinitem)              '添加到控件中
                        Try
                            If CInt(dt.Rows(i + 1).Item("pin").ToString) = 0 Then                          '如果下一项不是pin,添加个separator
                                Form_main.RecentTabItem_All.TabPanel.Items.Add(New RecentSeparatorItem)
                            End If
                        Catch ex As Exception
                        End Try
                    Else
                        Form_main.RecentTabItem_All.TabPanel.Items.Add(pinitem)
                    End If
                    AddHandler pinitem.ItemClick, AddressOf openProject                           '将itemclick 和 checked事件绑定上
                    AddHandler pinitem.PinButtonCheckedChanged, AddressOf topProject




之前比较坑的是seperator必需手动添加,否则pin和非pin之间没有间隔线,运行时如果有pin发生,seperator自动添加到最后一个pin。

还有不知道是不是bug还是编写问题。在触发PinButtonCheckedChanged事件后会自动触发ItemClick事件。帮助中 The base RecentItemBase class provides the ItemClick event for all Recent Item Control elements.,我新建了工程手动添加几个pinitem,做个msgbox,发现确实如此,但demo中没有此问题,所以比较恼人,后续跟进吧。


个人编程新手,代码有什么硬伤请指正。
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-11-22 01:20

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表