2

コンポーネントを派生させましたSystem.Windows.Forms.ScrollableControlが、border プロパティを追加するのに問題があります。試してみましCreateParamsたが成功しませんでした。

Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
    Get
        Dim params As CreateParams = MyBase.CreateParams
        params.Style = params.Style Or &H800000 ' Turn on WS_BORDER
        Return params
    End Get
End Property

 'disable scroll bars, this part also disables my border
Protected Overrides Sub DefWndProc(ByRef m As Message)
    If m.Msg <> 131 Then
        MyBase.DefWndProc(m)
    End If
End Sub
4

2 に答える 2

0

true/false の境界プロパティが必要なようです。

Protected Overrides ReadOnly Property CreateParams() As CreateParams
  Get
    Dim params As CreateParams = MyBase.CreateParams
    If _Border Then
      params.Style = params.Style Or &H800000 ' Turn on WS_BORDER
    End If
    Return params
  End Get
End Property

Private _Border As Boolean = False

Property Border() As Boolean
  Get
    Return _Border
  End Get
  Set(ByVal value As Boolean)
    _Border = value
    Me.RecreateHandle()
    Me.Invalidate()
  End Set
End Property

Bob Powell には、それに関する記事があります:コントロールに標準の境界線を追加する

于 2013-01-16T00:25:53.383 に答える
0

わかりました、スクロールバーと素敵な標準の境界線プロパティを一緒に持たないように解決しました:)誰かが必要な場合に備えて、ここにコードがあります:

リージョン「スクロールバーを無効にする」

<DllImport("user32.dll")> _
Private Shared Function ShowScrollBar(ByVal hWnd As IntPtr, ByVal wBar As Integer, ByVal bShow As Integer) As Integer
End Function

Protected Overrides Sub DefWndProc(ByRef m As Message)
    If m.Msg = 131 Then

        ShowScrollBar(m.HWnd, 3, 0)

    End If

    MyBase.DefWndProc(m)
End Sub

エンドリージョン

于 2013-01-16T10:23:13.380 に答える