Skip to content

CustomControlContext 类

传递给自定义控件 Initialize 的回调对象。保持回到框架的连接——用于反序列化设计器设置的属性值、请求重绘、创建定时器以及在控件绘制的元素之间移动键盘焦点。

自定义控件将 CustomControlContext 存储在私有字段中(通常名为 ControlContext),以便在 Initialize 返回后的任何时刻回调框架。窗体类对应类 CustomFormContext 扩展了 ShowClose

vb
Private Sub OnInitialize(ByVal Ctx As CustomControls.CustomControlContext) _
        Implements CustomControls.ICustomControl.Initialize

    ' Load any serialized property values
    If Not Ctx.GetSerializer.RuntimeUISrzDeserialize(Me, False) Then
        InitializeDefaultValues
    End If

    ' Remember the context for later
    Set Me.ControlContext = Ctx
End Sub

方法

ChangeFocusedElement

请求框架将键盘焦点移至特定 ElementTabIndex 值,如同用户按 TAB 直至到达该位置。WaynesGrid 在以编程方式选择单元格时使用此方法——网格更改其 SelectedCellX / SelectedCellY 然后调用此方法,使窗体级焦点跟踪与之匹配。

语法:object.ChangeFocusedElement ElementTabIndex

ElementTabIndex
必需 Long,匹配最近一次绘制过程中添加到画布的元素的 ElementTabIndex

CreateTimer

返回一个新的 CustomControlTimer,绑定到此控件的生命周期。定时器创建时为禁用状态;调用者设置 Interval,订阅定时器的 OnTimer 事件,并将 Enabled 设为 True 以启动。

语法:object.CreateTimer ( ) As stdole.IUnknown

框架以 stdole.IUnknown 类型返回定时器;用 CType(Of CustomControlTimer)(…) 转换以获取强类型引用。WaynesTimerWaynesSlider 都使用此模式。

GetSerializer

返回此控件实例的 SerializeInfo 句柄。序列化器暴露反序列化入口点和运行时/设计时模式标志。

语法:object.GetSerializer ( ) As SerializeInfo

Repaint

通知框架控件外观已更改,画布应在下次机会时重绘。框架最终回调 ICustomControl.Paint;快速连续多次调用 Repaint 最多只产生一次绘制。

语法:object.Repaint ( )

每个具体 Waynes… 控件都挂钩其状态和样式子对象上的 OnChanged 事件,并从处理程序中调用 Repaint——因此运行时赋值如 btn.NormalState.BackgroundFill.ColorPoints.SetSolidColor vbBlue 会触发自动重绘。

twinBASIC及其LOGO版权为作者"韦恩"所有