2010-03-10 67 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的建议,隐藏带有文本框的组合框是一种可能性,但是您必须使用绝对宽度作为下拉菜单。