更改已禁用的ComboBox和CheckBox的BackColor

时间:2012-07-13 15:09:13

标签: c# visual-studio-2008

我正在设置一个Windows窗体应用程序,我正在创建一个表单的只读版本和另一个版本的相同表单,用于添加/修改信息。在只读版本中,我正在设置表单,以便所有表单组件都是只读的。默认情况下,在Visual Studio 2008中,禁用表单组件时,该组件的BackColor属性将更改为灰色(ish)颜色。这可以通过在禁用后设置组件的BackColor属性来简单地纠正;但是,ComboBox或CheckBox不是这种情况。禁用这些组件后,我无法修改其颜色。有人知道如何在禁用后更改这些组件的颜色吗?我尝试过以下代码,但无济于事。

comboBoxCategory.Enabled = false;
comboBoxCategory.BackColor = Color.White;

非常感谢任何帮助。

感谢。

5 个答案:

答案 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 事件中,而不是根据需要调用该过程。