扩展System.Windows.Forms.ComboBox

时间:2008-12-27 18:18:34

标签: c# winforms user-controls combobox onpaint

我想使用ReadOnly属性扩展System.Windows.Forms.ComboBox控件,当ReadOnly = true时,该属性将显示所选项的文本(类似于标签)。 (我不喜欢通过设置Enabled = false来实现禁用的外观)

我如何在winforms中执行此操作?它在ASP.NET中非常简单,我只需要覆盖Render方法。然而,winforms似乎并不那么简单。

从我收集的内容中我需要

a)覆盖OnPaint方法

b)调用this.SetStyle(ControlStyles.UserPaint,true)以便调用OnPaint。

但现在看来我必须自己做所有这些画。真的吗?当ReadOnly = false时,是否不可能让基础ComboBox处理绘制控件?另外,我应该使用什么ControlStyles?

2 个答案:

答案 0 :(得分:1)

做什么窗户。
只需在组合框中选择一项,然后选择并启用它。

答案 1 :(得分:0)

将ComboBox控件放在UserControl上。 UserControl将传递大多数属性和事件,但是响应.ReadOnly属性,它将隐藏ComboBox控件并显示ReadOnly编辑框。