如何改变GroupBox的边框线颜色?

wangfeng12345678 2008-03-19 08:08:39
如何改变GroupBox的边框线颜色?是否需要重写GroupBox?具体怎样实现?
...全文
6115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
waken_hsh 2011-12-21
  • 打赏
  • 举报
回复
我也需要
aa7251836 2011-11-24
  • 打赏
  • 举报
回复
你能画出来?
自己画
那个GroupBox边框有弧度的
不是矩形

你还不如直接把背景颜色设置成 Transparent

我的系统是WIN7 蓝色图片上放个GroupBox 背景色设置Transparent 边框就么了就是白色的了

但是在XP上就没这就效果了
很是费解
卧云 2009-07-23
  • 打赏
  • 举报
回复
我现在要需要!
wzuomin 2008-03-20
  • 打赏
  • 举报
回复
除了我上面提到的方法外,再提供给LZ一个简单方法吧

Public Class Form1

Dim WithEvents TestGroupBox As New GroupBox

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TestGroupBox.Text = "TestGroupBox1"
TestGroupBox.Visible = True
Me.Controls.Add(TestGroupBox)
End Sub

Private Sub TestGroupBox_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles TestGroupBox.Paint
e.Graphics.Clear(TestGroupBox.BackColor)
e.Graphics.DrawString(TestGroupBox.Text, TestGroupBox.Font, Brushes.Red, 10, 1)
e.Graphics.DrawLine(Pens.Blue, 1, 7, 8, 7)
e.Graphics.DrawLine(Pens.Blue, 90, 7, TestGroupBox.Width - 2, 7)
e.Graphics.DrawLine(Pens.Blue, 1, 7, 1, TestGroupBox.Height - 2)
e.Graphics.DrawLine(Pens.Blue, 1, TestGroupBox.Height - 2, TestGroupBox.Width - 2, TestGroupBox.Height - 2)
e.Graphics.DrawLine(Pens.Blue, TestGroupBox.Width - 2, 7, TestGroupBox.Width - 2, TestGroupBox.Height - 2)
End Sub

End Class



wzuomin 2008-03-20
  • 打赏
  • 举报
回复
自己写一个吧

Imports System.ComponentModel

Public Class GroupBoxControl
Inherits Panel

Private lbl As Label
Private mBorderColor As Color = Color.Blue

<Browsable(True)> _
Public Overrides Property Text() As String
Get
Return lbl.Text
End Get
Set(ByVal value As String)
lbl.Text = value
Me.Invalidate()
End Set
End Property

Public Property BorderColor() As Color
Get
Return mBorderColor
End Get
Set(ByVal value As Color)
mBorderColor = value
Me.Invalidate()
End Set
End Property

Private Sub GroupBoxControl_ControlAdded(ByVal sender As Object, ByVal e As System.Windows.Forms.ControlEventArgs) Handles Me.ControlAdded
If e.Control.Left < 5 Then e.Control.Left = 5
If e.Control.Top < 15 Then e.Control.Top = 15
If e.Control.Right > Me.Width - 10 Then e.Control.Left = Me.Width - 10 - e.Control.Width
If e.Control.Bottom > Me.Height - 10 Then e.Control.Top = Me.Height - 10 - e.Control.Height
End Sub

Private Sub GroupBoxControl_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
e.Graphics.DrawRectangle(New Pen(mBorderColor), New Rectangle(2, 8, Me.Width - 5, Me.Height - 12))
End Sub

Public Sub New()
lbl = New Label
lbl.AutoSize = True
lbl.Text = "GroupBox"
Me.Controls.Add(lbl)
End Sub

Private Sub GroupBoxControl_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
lbl.Location = New Point(10, 1)
End Sub

End Class
wangfeng12345678 2008-03-20
  • 打赏
  • 举报
回复
这样变通的方法当然都能实现。我现在的问题是:不用自己画,就用groupbox这个控件,通过重写的方法能否实现改变边框线的颜色?
HimeTale 2008-03-20
  • 打赏
  • 举报
回复
还不如把边框设为不显示
然后自己画4条线上去

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧