控件Disabled时的ToolTip提示

写在前面:.net控件在Disabled时,其关联的ToolTip也不起作用了。这就带来了不便,如果您细心的话,你可以发现很多的界面,在Disabled时,都是没有提示的。不过word的按钮在Disabled时也可以出现提示。这样就给人一个感觉:被特别照顾了。本文就是介绍一个在控件Disabled时还能显示提示的自定义ToolTip。

源网址
http://www.codeproject.com/KB/miscctrl/ToolTip_WhenDisabled.aspx

效果图
 
上图中,RadioBox是Disabled的(Enabled = false),但它还可以显示提示,而控件在Enabled时显示不同的提示。这样就可以实现更好的交互性和友好性。

代码分析
1, 控件是继承自ToolTip
EnhancedToolTip Inherits ToolTip
2, 设置Disabled时的提示
下面的方法为控件在Paint在时候增加逻辑,以显示提示。

    Public Sub SetToolTipWhenDisabled(ByVal control As Control, ByVal value As String)
        If control Is Nothing Then
            Throw New ArgumentNullException("control")
        End If

        If Not String.IsNullOrEmpty(value) Then
            m_ToolTipWhenDisabled(control) = value
            If Not control.Enabled Then
                'When the control is disabled at design time, the EnabledChanged
                'event won't fire. So, on the first Paint event, we should call
                'PutOnTransparentSheet().
                AddHandler control.Paint, AddressOf DisabledControl_Paint
            End If
            AddHandler control.EnabledChanged, AddressOf Control_EnabledChanged
        Else
            m_ToolTipWhenDisabled.Remove(control)
            RemoveHandler control.EnabledChanged, AddressOf Control_EnabledChanged
        End If
    End Sub


3, 定位
SetToolTip(ts, m_ToolTipWhenDisabled(control))
这ToolTip控件的一个重要的方法,可以让控件在适当的地方显示。如上图中的Disabled的RadioBox上面显示提示。


posted @ 2011-03-31 15:49  天地任我飞翔  Views(718)  Comments(0)    收藏  举报