Я собираюсь создать поле со списком Windows Forms, которое имеет нормальную окраску и позволяет отображать раскрывающийся список, но не позволяет значению измениться.Насколько я могу судить, это не дубликат Как сделать Combobox в winforms доступным только для чтения , так как все советы, как представляется, направлены на отключение интерактивности поля со списком.У меня есть форма, в которой все элементы управления доступны только для чтения, и из-за характера приложения я думаю, что не будет никакого риска, что пользователь запутается, если значение поля со списком не изменится.Я бы хотел, чтобы пользователь мог видеть все возможные значения перечисления, к которому привязано поле со списком.
То, что у меня есть, - довольно плохой хак:
public partial class ReadOnlyComboBox : ComboBox
{
int prevIndex = -1;
public ReadOnlyComboBox()
{
InitializeComponent();
}
private void ReadOnlyComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
if (prevIndex <= 0)
prevIndex = SelectedIndex;
else
SelectedIndex = prevIndex;
}
}
По сути, это игнорирует ложные значения «0» из каркаса и принимает первое ненулевое значение, полученное из источника привязки.Непосредственными недостатками является то, что значение может быть установлено только один раз, и что привязанное перечисление должно начинаться с 1.
Любые рекомендации по очистке этого будут приветствоваться.Спасибо.