Change the border color and style of PictureBox in VB.NET
You know that by default you don't have too many options to change the Border Color/Style of a normal PictureBox control. I wanted to customize this control a little bit, so that you can at least change the border color and style when you click on any image. Let's see how it looks, and then I will show you how to code it.
<---- You see two Picture boxes here with Green Border.
<----- This Picture box is the one which comes by default. The border color here is Black and you don't have any property to change it directly.
<---- When you click on the picturebox, you will see that the border styles changes along with the color. It is no rocket science and the code to achieve this is pretty simple too.
Create a new class called myPictureBox.vb in your VB.NET project.
Imports System.Windows.Forms
Imports System.Drawing
Public Class myPictureBox
'This picture box is a bit special since you can change the border of the Picturebox.
'Notice that in the default picture box, you don't have too many options to customize
'the border. In this class, you just override the OnPaint event and draw the
'appropriate border when you click on any image control.
'I wanted to do this, since I had multiple images in a page, and I wanted to change
'the border or something when you click the image
Inherits PictureBox
Protected Overrides Sub OnPaint(ByVal pe As System.Windows.Forms.PaintEventArgs)
If Me.BackColor = Color.LightGray Then
ControlPaint.DrawBorder(pe.Graphics, pe.ClipRectangle, Color.Gray, ButtonBorderStyle.Solid)
Else
ControlPaint.DrawBorder(pe.Graphics, pe.ClipRectangle, Color.Green, ButtonBorderStyle.Dashed)
End If
MyBase.OnPaint(pe)
End Sub
Private Sub myPictureBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
If Me.BackColor = Color.LightGray Then
Me.BackColor = Color.White
Else
Me.BackColor = Color.LightGray
End If
End Sub
End Class
To check this class, I have created a Form called PictureBoxDemo (I am using VS 2005, by the way). It is the same form which you see in the pictures above. Pretty easy... isn't it?
Public Class PictureBoxDemo
Private Sub PictureBoxDemo_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim myPic1 As New myPictureBox
Dim myPic2 As New myPictureBox
Dim pctActualPictureBox As New PictureBox
With myPic1
.Top = 10
.Left = 10
.BackColor = Color.LightGray
End With
With myPic2
.Top = 10
.Left = 150
.BackColor = Color.LightGray
End With
With pctActualPictureBox
.Top = 150
.Left = 10
.BackColor = Color.LightGray
.BorderStyle = BorderStyle.FixedSingle
End With
Me.Controls.Add(myPic1)
Me.Controls.Add(myPic2)
Me.Controls.Add(pctActualPictureBox)
End Sub
End Class
Until next time
Rahul
Share this post : |