可能吗?

解决方案 »

  1.   

    参照以下方法:
    =============================
    '在窗体上放一个 OptionButton
    '==========|Form1|===============
    Option ExplicitPrivate Sub Form_Load()
        HookNoFocus Option1.hWnd
    End SubPrivate Sub Form_Unload(Cancel As Integer)
        UnHookNoFocus
    End Sub''添加一个模块,COPY 下面的代码:
    '==========|Module1|==================
    Option Explicit
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_WNDPROC = (-4)
    Private Const WM_SETFOCUS = &H7Private OldProc As Long
    Private m_hWnd As LongPrivate Function WinProc&(ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&)
                      
        Select Case wMsg
            Case WM_SETFOCUS
                Exit Function
        End Select
        
        WinProc& = CallWindowProc(OldProc, hWnd, wMsg, wParam, lParam)
    End Function
    Sub HookNoFocus(ByVal nhWnd As Long)    If OldProc <> 0 Then Exit Sub
        
        m_hWnd = nhWnd&
        
        OldProc = SetWindowLong(nhWnd&, GWL_WNDPROC, AddressOf WinProc)End Sub
    Sub UnHookNoFocus()    If OldProc = 0 Then Exit Sub    SetWindowLong m_hWnd, GWL_WNDPROC, OldProc
        OldProc = 0
    End Sub''看看是不是没有焦点了?
      

  2.   

    其实说简单点就是移除了控件的 WM_SETFOCUS 消息你也可以用子类的方法试试
      

  3.   

    我刚看到巴顿的一篇文章中的办法,也许可以给你一点启示:把commandbotton控件放到picturebox中,让picturebox足够小,直到盖住按钮的四边,可做成平面按钮和隐藏焦点的线框。
      

  4.   

    多谢 wxy_xiaoyu(☆然也☆ => .NET 努力ing),试试。