【问题标题】:Change forecolor of disabled combobox更改禁用组合框的前景色
【发布时间】:2010-10-20 18:07:54
【问题描述】:

我需要在禁用的组合框中使用黑色前景色。有可能吗?

【问题讨论】:

    标签: c# .net winforms combobox colors


    【解决方案1】:

    我过去对文本框使用的“hack”是让控件保持启用状态,但捕获“OnFocus”事件并立即将焦点设置到表单上的其他对象,最好是标签,因为它没有t 显示为被选中。我认为这也适用于组合框。

    【讨论】:

    • 这可能会在使用 Tab 键单步执行控件时引起一些问题
    【解决方案2】:

    我过去搜索过有关这方面的信息,据我所知,最好的解决方案是将组合框的 DrawMode 更改为 OwnerDrawFixedOwnerDrawVariable 然后在组合框的 DrawItem 事件中编写自己的绘图代码。

    我发现了这个article,它更详细地介绍了它。希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      comboBox1.BackColor=Color.Black;

      【讨论】:

      • 阅读问题。它是forecolor,而不是backcolor。
      【解决方案4】:

      不确定您的应用是 Winforms 还是 WPF。下面给出的代码适用于 WPF 应用程序。

          combo1.Items.Add("Item 1");
          combo1.Items.Add("Item 2");
          combo1.SelectedIndex = 0;
          combo1.Foreground = Brushes.Black;
      


      在我的 XAML 中,我添加了一个组合框并将其 IsEnabled 属性设置为“false”,然后在后面的代码中我使用了上面给出的代码并且它确实有效。

      HTH

      【讨论】:

        【解决方案5】:

        你需要做的就是说

        combobox1.ForeColor = Color.FromName("Black");
        

        控件是否禁用无关紧要,它应该改变前景色。

        【讨论】:

        • 不,这没有用:尝试使用:comboBox1.Enabled = false;组合框1.SelectedIndex = 0; comboBox1.ForeColor = Color.FromName("Red");
        • 看来我错了。我创建了一个快速示例应用程序来显示这一点。我发现的最佳解决方案是您可以将文本加粗以使灰色上的灰色更具可读性。示例应用程序的 zip 位于此处:yousendit.com/download/dVlwTXRkUnErV3hMWEE9PQ