禁用组合框的前景色更改

8
我需要在禁用的组合框中使用黑色前景色。这是否可能?
5个回答

5
我曾经搜索过相关的信息,据我所知,最好的解决方案是将组合框的 DrawMode 改为 OwnerDrawFixed 或者 OwnerDrawVariable,然后在组合框的 DrawItem 事件中编写自己的绘制代码。
我找到了这篇文章,它详细介绍了这一过程。希望对你有所帮助。

4

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


当使用Tab键浏览控件时,这可能会导致一些麻烦。 - Breeze

-1

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

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


在我的XAML中,我添加了一个组合框并将其IsEnabled属性设置为“false”,然后在代码后台中,我使用了上面给出的代码,它确实起作用。
希望对你有所帮助。

-2

你需要做的就是说出来

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

无论控件是否被禁用,它都应该改变前景色。

没有起作用: 尝试了以下代码: comboBox1.Enabled = false; comboBox1.SelectedIndex = 0; comboBox1.ForeColor = Color.FromName("Red"); - Sreedhar
看起来我错了。我创建了一个快速示例应用程序来展示这一点。我发现最好的解决方案是可以加粗文本以使灰色在灰色中更易读。示例应用程序的压缩包位于这里: http://www.yousendit.com/download/dVlwTXRkUnErV3hMWEE9PQ - Scott M.

-3

comboBox1.BackColor=Color.Black;


请仔细阅读问题,这是 前景色,而不是背景色。 - CesarGon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接