设置禁用组合的背面颜色为白色

时间:2011-05-24 09:06:07

标签: c# winforms combobox

喜 我有一个组合框,可以在运行时启用和禁用。现在我需要使背面颜色保持不变,即使它已启用或禁用。任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:3)

我找到了以下解决方案。

解决方案1:

禁用时将下拉样式设置为"DropDownList",然后在启用控件时将其重置为"DropDown"

combobox.DropDownStyle = ComboBoxStyle.DropDownList;

解决方案2:

转到此处http://www.codeproject.com/Articles/22454/ReadOnly-ComboBox

第一个解决方案适用于我和第二个解决方案你可以试试。

答案 1 :(得分:1)

如果这是WinForms,则将BackColor属性设置为您想要的任何内容。

如下所述,这不起作用。

答案 2 :(得分:1)

这对我有用

comboBox1.DropDownHeight = 1;
comboBox1.KeyDown += new KeyEventHandler(comboBox1_KeyDown);
comboBox1.KeyPress += new KeyPressEventHandler(comboBox1_KeyPress);
comboBox1.KeyUp += new KeyEventHandler(comboBox1_KeyUp);

现在在每个处理程序中只需设置e.Handled = true

void comboBox1_KeyUp(object sender, KeyEventArgs e)
{
    e.Handled = true;
}

void comboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}

void comboBox1_KeyDown(object sender, KeyEventArgs e)
{
    e.Handled = true;
}

现在,当您必须将其作为启用功能运行时,只需删除处理程序并设置DropDownHeight

comboBox1.KeyDown -= new KeyEventHandler(comboBox1_KeyDown);
comboBox1.KeyPress -= new KeyPressEventHandler(comboBox1_KeyPress);
comboBox1.KeyUp -= new KeyEventHandler(comboBox1_KeyUp);

答案 3 :(得分:0)

根据您的具体情况,Googling找到了一个潜在的解决方案:

如果你想要的是让组合框处于禁用状态(不可加工,但看起来与启用时相同),然后快速将Enabled属性从true设置为false,然后再次返回Enter实现它,虽然有些狡猾:

bool isDisabled = true;
private void comboBox1_Enter(object sender, EventArgs e)
{
    if(isDisabled)
    {
        comboBox1.Enabled = false;
        comboBox1.Enabled = true;
    }
}