喜 我有一个组合框,可以在运行时启用和禁用。现在我需要使背面颜色保持不变,即使它已启用或禁用。任何人都可以帮助我吗?
答案 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;
}
}