###前提・実現したいこと
System.Windows.Forms.Buttunを継承したカスタムコントロールにてOnPaintを利用して幅と色を指定して罫線を引いています。
コントロールの上にエクスプローラ等の別画面を開いた際、罫線が画面上に見えているコントロールの幅にて引かれます。その後エクスプローラを閉じた時にその罫線が消えずに残るので、ボタンの中に罫線が引かれたままになってしまいます。(マウスオーバーすると消えます)
エクスプローラを閉じた時に自動で罫線も元の大きさにもどしたいのですがやり方を教えていただけますでしょうか。
ボタン内のbackcolorや文字を再描画できれば良いと思うのですが、、、。
###発生している問題・エラーメッセージ
エラーメッセージ
###該当のソースコード
Visual
1Public Class CustomButton 2 Inherits Button 3 ''' <summary>枠線色</summary> 4 Private pBorderColor As Color = Color.FromArgb(213I, 223I, 229I) 5 ''' <summary>枠線影色</summary> 6 Private pBorderShadow As Color = Color.White 7 ''' <summary>枠線太さ</summary> 8 Private pBorderWidth As Integer = 1 9 ''' <summary>枠線スタイル</summary> 10 Private pBorderStyle As ButtonBorderStyle = ButtonBorderStyle.Solid 11 ''' <summary>枠線スタイル</summary> 12 Private pTextAlign As HorizontalAlignment 13 14 ''' <summary>枠線</summary> 15 Public Property BorderColor() As Color 16 Get 17 Return pBorderColor 18 End Get 19 Set(ByVal value As Color) 20 pBorderColor = value 21 End Set 22 End Property 23 24 ''' <summary>枠線影色</summary> 25 Public Property BorderShadow() As Color 26 Get 27 Return pBorderShadow 28 End Get 29 Set(ByVal value As Color) 30 pBorderShadow = value 31 End Set 32 End Property 33 34 ''' <summary>枠線太さ</summary> 35 Public Property BorderWidth() As Integer 36 Get 37 Return pBorderWidth 38 End Get 39 Set(ByVal value As Integer) 40 pBorderWidth = value 41 End Set 42 End Property 43 44 ''' <summary>枠線スタイル</summary> 45 Public Property BorderStyle() As ButtonBorderStyle 46 Get 47 Return pBorderStyle 48 End Get 49 Set(ByVal value As ButtonBorderStyle) 50 pBorderStyle = value 51 End Set 52 End Property 53 54 Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) 55 MyBase.OnPaint(e) 56 57 Dim tBorderRect As Rectangle = e.ClipRectangle 58 ControlPaint.DrawBorder(e.Graphics, tBorderRect, BorderColor, pBorderWidth, 59 pBorderStyle, BorderColor, pBorderWidth, pBorderStyle, 60 BorderColor, pBorderWidth, pBorderStyle, BorderColor, pBorderWidth, pBorderStyle) 61 62 End Sub 63 64End Class 65
###試したこと
Windows7にて現象が再現します。
クラシックのテーマだと確実に再現します。
上記テーマでなくても、画面外にフォームを移動してコントロールが画面枠に重なるようにすると再現します。
ダブルバッファリングを有効にしてみましたがダメでした。
###補足情報(言語/FW/ツール等のバージョンなど)
.netFramework4.0、Visual Studio 2015

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/29 23:57
2017/03/30 12:59