自定义OutlookBar控件的开发与实现

在开发应用程序时,经常需要为用户提供直观、易用的操作界面。OutlookBar控件,类似于Microsoft Outlook中的导航栏,是实现这一目标的理想选择。本文将详细介绍如何开发一个自定义的OutlookBar控件,使其在运行时和设计时都具备良好的功能性和可访问性。

功能需求

为了使OutlookBar控件能够满足用户的需求,需要实现以下功能:

  • 在设计时和运行时都能够调整控件的大小,以决定哪些按钮以大按钮的形式显示。
  • 通过集合编辑器添加和修改按钮。
  • 在运行时,通过下拉图标打开上下文菜单,选择哪些按钮可见。
  • 打开“导航栏选项”表单,重新排序按钮。
  • 鼠标移动时,如果需要,按钮会重新绘制。
  • 为悬停按钮提供不同的颜色方案。
  • 大按钮和小按钮需要按正确的顺序显示,即使在调整控件大小时也是如此。
  • 能够设置按钮为“不允许”状态,根据程序的用户,可以禁用某些按钮。

基本结构

自定义OutlookBar控件包含三个主要类:

此类代表单独的按钮实例。此类不进行绘制操作,其基本成员包括:

  • Text:当按钮处于大状态时,显示在按钮上的文本。如果按钮位于控件的底部,将显示包含按钮文本的工具提示。
  • Visible:当设置为False时,按钮在控件中不可见。可以在运行时使用上下文菜单中的下拉图标更改此值。
  • Allowed:当设置为False时,按钮在控件中不可见。在运行时无法访问此按钮,因此可以防止某些用户点击某些按钮。
  • Image:要显示的图像。最好使用24x24像素或更大的图标。
  • Rectangle:仅在程序集内部可访问。当OutlookBar类计算按钮的绘制位置时,它将为每个按钮提供矩形区域。借助此属性,可以轻松确定哪个按钮被点击或需要使用不同颜色重新绘制。

此类代表控件上的按钮集合,继承自CollectionBase。在代码中,可以使用常规过程向控件添加或移除按钮:

Dim newButton As New Altea.OutlookBarButton With newButton .Text = "my button" .Visible = False .Image = My.Resources.myImage End With Me.OutlookBar1.Buttons.Add(newButton)

或者使用重载的构造函数:

Me.OutlookBar1.Buttons.Add(New Altea.OutlookBarButton("my button", My.Resources.myImage))

此类继承自System.Windows.Forms.Control,是主类。它有一个名为Renderer的属性,有两个选项:Office2003和Office2007。在未来的版本中,将增加一个名为Custom的选项。可以在代码中选择按钮:

Me.OutlookBar1.Buttons("Journal").Selected = True

此类包含最多的事件。例如MouseMove、MouseDown、MouseLeave等事件将在此类中处理。绘制操作也发生在此类中。OutlookBar将根据发生哪个用户操作来决定按钮的ButtonState:

Friend Enum ButtonState Passive Hovering Selected End Enum
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485