我有一个组合框,我有Enabled = false。在这种情况下,它会使它变成灰色。我想知道是否有一种方法可以将复选框背景颜色保持为cornsilk而不启用它?
情况是我有一个表单,我会在选择项目时刷新数据。如果用户选择编辑记录,我启用表单接受更改,因为它主要是文本框,我只是更改那些的readonly属性。但是组合框看起来不同,所以我想看看我能做些什么让它像其他形式一样保持不变......
有什么想法吗?
答案 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所建议的那样,但是你必须使用绝对宽度作为下拉列表。