Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2013-11-08
9
Medium Priority
?
1,307 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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 70

Expert Comment

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

Accepted Solution

by:
käµfm³d   👽 earned 1600 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

Hire Technology Freelancers with Gigs

Work with freelancers specializing in everything from database administration to programming, who have proven themselves as experts in their field. Hire the best, collaborate easily, pay securely, and get projects done right.

Question has a verified solution.

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

Since .Net 2.0, Visual Basic has made it easy to create a splash screen and set it via the "Splash Screen" drop down in the Project Properties.  A splash screen set in this manner is automatically created, displayed and closed by the framework itsel…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
Screencast - Getting to Know the Pipeline

877 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