我正在设置一个Windows窗体应用程序,我正在创建一个表单的只读版本和另一个版本的相同表单,用于添加/修改信息。在只读版本中,我正在设置表单,以便所有表单组件都是只读的。默认情况下,在Visual Studio 2008中,禁用表单组件时,该组件的BackColor属性将更改为灰色(ish)颜色。这可以通过在禁用后设置组件的BackColor属性来简单地纠正;但是,ComboBox或CheckBox不是这种情况。禁用这些组件后,我无法修改其颜色。有人知道如何在禁用后更改这些组件的颜色吗?我尝试过以下代码,但无济于事。
comboBoxCategory.Enabled = false;
comboBoxCategory.BackColor = Color.White;
非常感谢任何帮助。
感谢。
答案 0 :(得分:0)
你做不到。
对于复选框,只需处理OnCheck事件并将其撤消。
组合框最简单的解决方案是仅填充一个项目。如果用户单击,则让用户下拉,但没有任何内容可以将其更改为。
答案 1 :(得分:0)
我不相信您可以使用开箱即用的这些控件来完成此操作。您可能必须扩展组合框并覆盖OnPaint()方法。
您也可以启用组合框,存储选定的值(更改为只读模式时)并使用SelectedIndexChanged事件来维护选择。
我认为需要对复选框执行相同操作,但使用CheckChanged事件
答案 2 :(得分:0)
在按代码
禁用ComboBox和CheckBox之后立即更改它们的BackColor当这些控件被禁用或启用时,它们不会触发这些控件
答案 3 :(得分:0)
我认为这就是你要找的东西:
comboBoxCategory.BackColor = System.Drawing.Color.White;
答案 4 :(得分:0)
我在VB中编写的这段代码可以帮助您解决问题。 将此代码放入Form更改comboBox1中,设置为您的控件名称, 将颜色更改为您喜欢的任何颜色 .BackColor = Color.White
Dim lbl_Box As Label
Private Sub Disable_control()
If ComboBox1.Enabled = True Then
lbl_Box = New Label
With lbl_Box
.Name = "lbl_Box"
.BackColor = Color.White
.Top = ComboBox1.Top + 1
.Left = ComboBox1.Left
.Width = ComboBox1.Width - 21
.Text = ComboBox1.Text
.Font = ComboBox1.Font
.Padding = New Padding(0, 2, 0, 0)
End With
Me.Controls.Add(lbl_Box)
ComboBox1.Enabled = False
lbl_Box.BringToFront()
Else
lbl_Box.Dispose()
Me.Controls.Remove(lbl_Box)
ComboBox1.Enabled = True
End If
End Sub
您可以将带有一些更改的代码放在 ComboBox1_EnabledChanged 事件中,而不是根据需要调用该过程。