Link to home
Start Free TrialLog in
Avatar of BlakeMcKenna
BlakeMcKennaFlag for United States of America

asked on

Label Forecolor is changing unexpectedly?

I have a datagridview that contains quite a few controls, GroupBoxes, Tabs to name a couple. In one of my GB's, I have several labels that when they appear, there Forecolor is either Green or Red. This GB is resides on a TabPage as well as does another smaller TabControl. When I click on a TabPage of the smaller TabControl...the ForeColor of the Labels in the GB revert back to Black. Now there is no code in my logic that does this...consequently I'm stumped as to why this would happen. Any other action I do on the form doesn't change the Labels back to Green or Red. My guess is that it has something to do with the Form and/or certain controls repainting themselves but not certain.
Avatar of Fernando Soto
Fernando Soto
Flag of United States of America image

Can you post a screen shot of the UI it will help in visualizing what you are saying. Also post the code showing the way you update the Forecolor of the control.

What type of application Windows Form, WPF other?
What language are you using?
Perform a project wide search for .Green and .Red, using the Find in Files feature (Ctrl-Shift-F). It might lead you to the culprit.

If this does not give results, try for Green, but without the dot in case the color is not straight Green, but something like DarkGreen.
Avatar of BlakeMcKenna

ASKER

This is a VB.Net Windows App. Here is a screenshot.
Screenshot.jpg
How about the code showing how the Forecolor is being set.
Sorry...here ya go!

                    If CBool(clsMain.loadTEST) Then
                        lblLoad_TestStatus.Visible = True
                        cboDefaultLoad.Checked = True

                        If clsMain.loadTESTComplete Then
                            lblLoad_TestStatus.ForeColor = Color.Green
                            lblLoad_TestStatus.Text = "Complete"
                        Else
                            lblLoad_TestStatus.ForeColor = Color.Red
                            lblLoad_TestStatus.Text = "Incomplete"
                        End If

                        InitializeErrorClass(EH)
                        cmbChannel1.Text = BL.GetChannel(clsLoadH.channel_ID, EH)

                        InitializeErrorClass(EH)
                        cmbDirection1.Text = BL.GetDirection(clsLoadH.direction_ID, EH)

                        InitializeErrorClass(EH)
                        cmbCellPosition1.Text = BL.GetAngle(clsLoadH.angle_ID, EH)

                        txtLoadingCapacity.Text = clsLoadH.load
                        cmbLoadDecimal1.Text = clsLoadH.loadDecimalPlaces

                        InitializeErrorClass(EH)
                        cmbLoadUnitType.Text = BL.GetUnitType(clsLoadH.loadUnitType_ID, EH)

                        InitializeErrorClass(EH)
                        cmbLoadUnit.Text = BL.GetUnit(clsLoadH.loadUnit_ID, EH)

                        InitializeErrorClass(EH)
                        cmbOutputUnitType.Text = BL.GetUnitType(clsLoadH.outputUnitType_ID, EH)

                        InitializeErrorClass(EH)
                        cmbOutputUnit.Text = BL.GetUnit(clsLoadH.outputUnit_ID, EH)

                        InitializeErrorClass(EH)
                        cmbOutputDecimal1.Text = clsLoadH.outputDecimalPlaces

                        InitializeErrorClass(EH)
                        GetLoadData(iMain_ID, EH)

                        cmbRunNo.SelectedIndex = 0

                        If EH.ErrorMessage > "" Then
                            GoTo ProcessMessage
                        End If
                    End If

                    If CBool(clsMain.repeatabilityTEST) Then
                        lblRepeatability_TestStatus.Visible = True
                        cboRepeatabilityTest.Checked = True

                        If clsMain.repeatabilityTESTComplete Then
                            lblRepeatability_TestStatus.ForeColor = Color.Green
                            lblRepeatability_TestStatus.Text = "Complete"
                        Else
                            lblRepeatability_TestStatus.ForeColor = Color.Red
                            lblRepeatability_TestStatus.Text = "Incomplete"
                        End If

                        If Not tabTests.TabPages.Contains(tabRepeatabilityTest) Then
                            tabTests.TabPages.Add(tabRepeatabilityTest)
                        End If
                    End If

                    If CBool(clsMain.creepTEST) Then
                        lblCreep_TestStatus.Visible = True
                        cboCreepTest.Checked = True

                        If clsMain.creepTESTComplete Then
                            lblCreep_TestStatus.ForeColor = Color.Green
                            lblCreep_TestStatus.Text = "Complete"
                        Else
                            lblCreep_TestStatus.ForeColor = Color.Red
                            lblCreep_TestStatus.Text = "Incomplete"
                        End If

                        If Not tabTests.TabPages.Contains(tabCreepTest) Then
                            tabTests.TabPages.Add(tabCreepTest)
                        End If
                    End If

                    If CBool(clsMain.zeroBalanceTEST) Then
                        lblFirstFinalZero_TestStatus.Visible = True
                        cboFirstFinalZero.Checked = True

                        If clsMain.zeroBalanceTESTComplete Then
                            lblFirstFinalZero_TestStatus.ForeColor = Color.Green
                            lblFirstFinalZero_TestStatus.Text = "Complete"
                        Else
                            lblFirstFinalZero_TestStatus.ForeColor = Color.Red
                            lblFirstFinalZero_TestStatus.Text = "Incomplete"
                        End If
                    End If

                    If CBool(clsMain.shuntTEST) Then
                        lblShunt_TestStatus.Visible = True
                        cboShuntTest.Checked = True

                        If clsMain.shuntTESTComplete Then
                            lblShunt_TestStatus.ForeColor = Color.Green
                            lblShunt_TestStatus.Text = "Complete"
                        Else
                            lblShunt_TestStatus.ForeColor = Color.Red
                            lblShunt_TestStatus.Text = "Incomplete"
                        End If
                    End If

                    If CBool(clsMain.excitationTEST) Then
                        lblExcitation_TestStatus.Visible = True
                        cboExcitation.Checked = True

                        If clsMain.excitationTESTComplete Then
                            lblExcitation_TestStatus.ForeColor = Color.Green
                            lblExcitation_TestStatus.Text = "Complete"
                        Else
                            lblExcitation_TestStatus.ForeColor = Color.Red
                            lblExcitation_TestStatus.Text = "Incomplete"
                        End If
                    End If

                    If CBool(clsMain.reproducibilityTEST) Then
                        lblReproducibility_TestStatus.Visible = True
                        cboReproducibility.Checked = True

                        If clsMain.reproducibilityTESTComplete Then
                            lblReproducibility_TestStatus.ForeColor = Color.Green
                            lblReproducibility_TestStatus.Text = "Complete"
                        Else
                            lblReproducibility_TestStatus.ForeColor = Color.Red
                            lblReproducibility_TestStatus.Text = "Incomplete"
                        End If
                    End If

                    If CBool(clsMain.recoveryTEST) Then
                        lblRecovery_TestStatus.Visible = True
                        cboRecovery.Checked = True

                        If clsMain.recoveryTESTComplete Then
                            lblRecovery_TestStatus.ForeColor = Color.Green
                            lblRecovery_TestStatus.Text = "Complete"
                        Else
                            lblRecovery_TestStatus.ForeColor = Color.Red
                            lblRecovery_TestStatus.Text = "Incomplete"
                        End If
                    End If

                    If CBool(clsMain.resistanceTEST) Then
                        lblResistance_TestStatus.Visible = True
                        cboResistance.Checked = True

                        If clsMain.resistanceTESTComplete Then
                            lblResistance_TestStatus.ForeColor = Color.Green
                            lblResistance_TestStatus.Text = "Complete"
                        Else
                            lblResistance_TestStatus.ForeColor = Color.Red
                            lblResistance_TestStatus.Text = "Incomplete"
                        End If
                    End If

                    If CBool(clsMain.leakageTEST) Then
                        lblLeakage_TestStatus.Visible = True
                        cboLeakage.Checked = True

                        If clsMain.leakageTESTComplete Then
                            lblLeakage_TestStatus.ForeColor = Color.Green
                            lblLeakage_TestStatus.Text = "Complete"
                        Else
                            lblLeakage_TestStatus.ForeColor = Color.Red
                            lblLeakage_TestStatus.Text = "Incomplete"
                        End If
                    End If
                End If

Open in new window

Do you ever set the ForeColor to Nothing?
Also Have you done a global search of the project for Green as James has suggested?

The reason I ask if you have set the ForeColor somewhere to Nothing is because ForeColor is a ambient  property.

From Microsoft Documentation.

The ForeColor property is an ambient property. An ambient property is a control property that, if not set, is retrieved from the parent control. For example, a Button will have the same BackColor as its parent Form by default. For more information about ambient properties, see the AmbientProperties class or the Control class overview.
ASKER CERTIFIED SOLUTION
Avatar of Jacques Bourgeois (James Burger)
Jacques Bourgeois (James Burger)
Flag of Canada image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
I know why it's doing it now. I have a routine that handles all control settings including the ForeColor and BackColor properties. When I selected a Tab from the TabControl, it executed that function which caused the Label to revert back to it's specified color, which in this case was it's default color of Black!