Расширить System.Windows.Forms.ComboBox - PullRequest
1 голос
/ 27 декабря 2008

Я хотел бы расширить элемент управления System.Windows.Forms.ComboBox с помощью свойства ReadOnly, которое будет отображать текст выбранного элемента (аналогично метке), когда ReadOnly = true. (Мне не нравится отключенный вид, достигаемый установкой Enabled = false)

Как мне это сделать в winforms? Это было действительно просто в ASP.NET, где все, что мне нужно было сделать, это переопределить метод Render. Однако с winforms это не так просто.

Из того, что я собираю, мне нужно

а) Переопределить метод OnPaint

b) Вызовите this.SetStyle (ControlStyles.UserPaint, true), чтобы вызывался OnPaint.

Но теперь мне кажется, что я должен сделать ВСЕ рисование самостоятельно. Это правда? Разве нельзя позволить базовому ComboBox иметь дело с рисованием элемента управления, когда ReadOnly = false? Кроме того, какие ControlStyles я должен использовать?

Ответы [ 2 ]

1 голос
/ 27 декабря 2008

Делайте то, что делает Windows.
Имейте только 1 элемент в выпадающем списке, и пусть он будет выбран и включен.

0 голосов
/ 27 декабря 2008

Поместите элемент управления ComboBox в UserControl. UserControl будет проходить через большинство свойств и событий, но в ответ на свойство .ReadOnly он будет скрывать элемент управления ComboBox и отображать вместо него поле редактирования ReadOnly.

...