2011-05-24 56 views
0

嗨 我有一個組合框,它可以在運行時啓用和禁用。現在我需要使背部顏色不變,即使啓用或禁用。任何人都可以幫我?設置禁用組合的顏色爲白色

+4

WPF?的WinForms? ASP.NET? – 2011-05-24 09:08:42

+0

請參閱下面的鏈接(http://www.codeproject.com/KB/combobox/disabledcombodisplay.aspx) – crypted 2011-05-24 10:30:45

+0

這可能最接近工作解決方案;只是DrawItem代碼末尾的Dispose困擾了我。 – takrl 2011-05-24 11:01:26

回答

1

如果這是WinForms,則將BackColor屬性設置爲您想要的值。

如下所述,這是行不通的。

+0

將無法​​使用,如果禁用,則ComboBox會自動呈灰色顯示_show_已禁用。 – takrl 2011-05-24 09:35:31

+0

你是絕對正確的 - 教我更仔細地檢查。什麼適用於TextBox不適用於組合框... – ScruffyDuck 2011-05-24 10:16:21

0

取決於你是什麼之後,Googling已經找到了我一個潛在的解決方案:

如果你追求的是讓處於禁用狀態組合框(unchangable,但看着同一個啓用時) ,然後迅速從真正的設置Enabled屬性,爲false,然後再重新輸入實現它,雖然有點哈克方式:

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

這爲我工作

comboBox1.DropDownHeight = 1; 
comboBox1.KeyDown += new KeyEventHandler(comboBox1_KeyDown); 
comboBox1.KeyPress += new KeyPressEventHandler(comboBox1_KeyPress); 
comboBox1.KeyUp += new KeyEventHandler(comboBox1_KeyUp); 
每個這種處理器剛剛成立的

現在e.Handled =真實

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); 
2

我發現以下解決方案。

解決方案1:

設置dropdownstyle是"DropDownList"禁用時,然後將其重置爲"DropDown"當你啓用了控制

combobox.DropDownStyle = ComboBoxStyle.DropDownList; 

解決方案2:

轉到這裏http://www.codeproject.com/Articles/22454/ReadOnly-ComboBox

對我和第二個解決方案的第一個解決方案工作可以嘗試。

+0

它爲我工作 – 2016-10-24 15:37:00