BlakeMcKenna
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.
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.
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.
ASKER
This is a VB.Net Windows App. Here is a screenshot.
Screenshot.jpg
Screenshot.jpg
How about the code showing how the Forecolor is being set.
ASKER
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
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.
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
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!
What type of application Windows Form, WPF other?
What language are you using?