Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改禁用组合框和复选框的背景色_C#_Visual Studio 2008 - Fatal编程技术网

C# 更改禁用组合框和复选框的背景色

C# 更改禁用组合框和复选框的背景色,c#,visual-studio-2008,C#,Visual Studio 2008,我正在设置Windows窗体应用程序,并正在创建窗体的只读版本和同一窗体的另一个版本,以添加/修改信息。在只读版本中,我正在设置表单,以便所有表单组件都是只读的。默认情况下,在Visual Studio 2008中,当禁用表单组件时,该组件的BackColor属性将更改为灰色(淡灰色)。这可以通过设置组件禁用后的BackColor属性来简单地纠正;但是,组合框或复选框的情况并非如此。一旦这些组件被禁用,我就无法修改它们的颜色。是否有人知道在禁用这些部件后如何更改其颜色?我尝试了以下代码,但没有效

我正在设置Windows窗体应用程序,并正在创建窗体的只读版本和同一窗体的另一个版本,以添加/修改信息。在只读版本中,我正在设置表单,以便所有表单组件都是只读的。默认情况下,在Visual Studio 2008中,当禁用表单组件时,该组件的BackColor属性将更改为灰色(淡灰色)。这可以通过设置组件禁用后的BackColor属性来简单地纠正;但是,组合框或复选框的情况并非如此。一旦这些组件被禁用,我就无法修改它们的颜色。是否有人知道在禁用这些部件后如何更改其颜色?我尝试了以下代码,但没有效果

comboBoxCategory.Enabled = false;
comboBoxCategory.BackColor = Color.White;
任何帮助都将不胜感激

谢谢。

你不能

对于复选框,只需处理OnCheck事件并撤消它


组合框最简单的解决方案是只填充一个项目。如果用户单击,请让其下拉,但不会有任何更改。

我不相信您可以使用这些现成的控件来完成此操作。您可能需要扩展组合框并重写OnPaint()方法

您还可以保持组合框处于启用状态,存储所选值(更改为只读模式时),并使用SelectedIndexChanged事件来维护选择


我相信对复选框也需要这样做,但是使用CheckChanged事件

在通过代码禁用组合框和复选框后立即更改其背景色


当这些控件被禁用或启用时,它们的事件不会在这些控件上触发

我想这就是您要寻找的:

    comboBoxCategory.BackColor = System.Drawing.Color.White;

这段代码是我用VB编写的,它可以帮助你解决你的问题。 将此代码放入表单中,将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事件中,而不是调用过程(如果需要)