2010-03-10 80 views
0

我有一個組合框,我有Enabled = false。如果是這樣,它會導致它變成灰色。我想知道是否有一種方法,我可以保持複選框背景顏色爲cornsilk而它沒有啓用?Combobox背景顏色雖然未啓用

情況是,我有一個表格,當選擇一個項目時,我將刷新數據。如果用戶選擇編輯記錄,我使表單接受更改,因爲它主要是文本框,我只是更改這些只讀屬性。但組合框看起來不同,所以我想看看我能做些什麼來使它保持與其他形式一樣...

任何想法?

回答

0

我只是簡單地用它上面的TextBox來隱藏它,並將它的Visible屬性設置爲false。然後,您的用戶單擊「編輯」按鈕,即可隱藏TextBox並將其Visible屬性設置爲true以顯示ComboBox。

也許您希望通過將其值設置爲SelectedItemChanged()事件處理程序的ComboBox.SelectedItem屬性值來更新您的TextBox.Text屬性。

讓我們假設如下:

ComboBox cb = new ComboBox(); 
// Position, size and other properties are set through design. 
cb.SelectedIndex = 0; // Forces selection of first item for demo purposes. 

TextBox tb = new TextBox(); 
tb.Size = cb.Size; 
tb.Position = cb.Position; 
tb.Text = cb.SelectedItem.ToString(); 
tb.Visible = true; 
tb.Readonly = true; 

cb.Visible = false; 

然後,單擊編輯按鈕:

private void EditButton_Click(...) { 
    tb.Visible = false; 
    cb.Visible = true; 
} 

,讓您的TextBox.Text屬性值按照您的SelectedItem:

private void ComboBox_SelectedIndexChanged(...) { 
    tb.Text = cb.SelectedItem.ToString; 
} 

而且你只會做與你的EditButton_Click()事件處理程序相反的方式來恢復你的表單只讀模式。

0

如果美學的形式很重要,你可以考慮使用Jquery UI或其他插件。您可以使用CSS控制整個外觀。

按照Will的建議,隱藏帶有文本框的組合框是一種可能性,但是您必須使用絕對寬度作爲下拉菜單。