未启用Combobox背景颜色

时间:2010-03-10 18:50:26

标签: combobox background-color

我有一个组合框,我有Enabled = false。在这种情况下,它会使它变成灰色。我想知道是否有一种方法可以将复选框背景颜色保持为cornsilk而不启用它?

情况是我有一个表单,我会在选择项目时刷新数据。如果用户选择编辑记录,我启用表单接受更改,因为它主要是文本框,我只是更改那些的readonly属性。但是组合框看起来不同,所以我想看看我能做些什么让它像其他形式一样保持不变......

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

我只需用TextBox隐藏它并将其Visible属性设置为false。然后,您的用户单击“编辑”按钮,隐藏TextBox并显示ComboBox,其Visible属性设置为true。

也许您希望通过将其值设置为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()事件处理程序的反向操作即可将表单恢复为只读模式。

答案 1 :(得分:0)

如果形式的美学很重要,您可以考虑使用Jquery UI或其他插件。您可以使用CSS控制整个外观。

使用文本框隐藏组合框是一种可能,如Will所建议的那样,但是你必须使用绝对宽度作为下拉列表。