Solved

Changing VB.Net control backcolor property to Default Control color?

Posted on 2013-11-08
9
1,058 Views
Last Modified: 2013-11-11
This might be a relatively easy question but I'm not sure how to change a Vb.Net control's backcolor property to the default "Control" color? I know how to do in design mode (see screenshot), but the Color Object does not have "Control" as a color. How can I change this in code?

Thanks!
Screenshot.jpg
0
Comment
Question by:BlakeMcKenna
  • 3
  • 3
  • 2
  • +1
9 Comments
 
LVL 70

Expert Comment

by:Éric Moreau
ID: 39634016
not sure of exactly what you want but have a look at http://emoreau.com/Entries/Articles/2005/07/Colors-of-disabled-controls.aspx
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 39634023
Me.Button1.BackColor = Color.FromKnownColor(KnownColor.Control)

Open in new window

0
 

Author Comment

by:BlakeMcKenna
ID: 39634049
kaufmed,

That helps but I guess it was my fault for not being more clear. How do I get the integer value for that color? The integer value is what I need to store in the DB.
0
ScreenConnect 6.0 Free Trial

At ScreenConnect, partner feedback doesn't fall on deaf ears. We collected partner suggestions off of their virtual wish list and transformed them into one game-changing release: ScreenConnect 6.0. Explore all of the extras and enhancements for yourself!

 
LVL 70

Expert Comment

by:Éric Moreau
ID: 39634064
I think it's 5
0
 
LVL 75

Accepted Solution

by:
käµfm³d   👽 earned 400 total points
ID: 39634106
KnownColor is an enum, so just cast it.

Dim controlColor As Integer = DirectCast(KnownColor.Control, Integer)

Open in new window


To revert, cast again:

Dim controlColor As KnownColor = DirectCast(someIntegerValue, KnownColor)

Open in new window

0
 

Author Comment

by:BlakeMcKenna
ID: 39634199
Well I tried that and found that I didn't even need to Cast it. Just a direct assignment:

    ctlBackColor = KnownColor.Control
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 39634337
Possibly. VB is a bit more forgiving on implicit casts, so it may be fine. You might encounter issues if you're ever asked to port the code over to C#.
0
 
LVL 40
ID: 39635229
Wrong solution. This might work with some controls, but not all. By default, the Control color is the color you get on a button, a light shade of gray. Many controls use another color. For instance, the default color of a TextBox is WindowText, which is White. But the result can be changed, at least under Windows XP, through the Configuration Panel or if the user applies a theme to its Windows environment.

If you want to set the default color according to the current Windows theme, then you would need to set the color differently depending on whether you are dealing with a Button or a TextBox.

If you really want the default color for a given control, or simply want a single way of specifyint the color, use the DefaultBackColor property for the specific type of control, for instance:

txtIntRate.BackColor = TextBox.DefaultBackColor
btnQuit.BackColor = Button.DefaultBackColor
0
 

Author Comment

by:BlakeMcKenna
ID: 39638856
Hi James,

I see your point here and it makes sense. Here is what I am trying to do. I have an application that allows the user to customize the look and feel of the various controls. There is a Form that has GroupBoxes that contain 4 different properties for controls (each GroupBox represents a specific Control...see Screenshot). These are the common controls used, i.e. TextBox, Button, Label, DataGridView, GroupBox, StatusStrip, etc.

The 4 different properties are the Bold, Italics, BackColor, ForeColor. The BackColor/ForeColor are Checkboxes and when checked, the Color Dialog pops up allowing the user to select the color they want.  Here is a snippet of code that is used for all the controls and modified accordingly.

                Dim pal As New ColorDialog
                Dim iColor As Integer
                Dim ctlBackColor As Integer
           
                If cboButtonBackColor.Checked = True Then
                    pal.ShowDialog()
                    iColor = pal.Color.ToArgb
                    ctlBackColor = iColor
                    pbButtonsBackColor.BackColor = pal.Color
                Else
                    ctlBackColor = KnownColor.Control
                    pbButtonsBackColor.BackColor = Me.BackColor
                End If

The ctlBackColor gets stored as an integer to the Database. Whenever a Form is activated, all the Buttons will reflect that stored value using the "Color.FromArgb(Database Value)".

My point being is that in the form that allows the users to customize controls, I can't really assign Button.DefaultBackColor because I'm not assigning it to an actual button control rather an integer variable. If you know of a way, I'm all ears!!! Thanks
Screenshot.jpg
0

Featured Post

DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Microsoft Reports are based on a report definition, which is an XML file that describes data and layout for the report, with a different extension. You can create a client-side report definition language (*.rdlc) file with Visual Studio, and build g…
Microsoft Active Directory, the widely used IT infrastructure, is known for its high risk of credential theft. The best way to test your Active Directory’s vulnerabilities to pass-the-ticket, pass-the-hash, privilege escalation, and malware attacks …
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…

777 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question