1

我想使用 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?

4

2 回答 2

1

做 windows 做的事情。
组合框中只有 1 个项目,然后选择并启用它。

于 2008-12-27T19:41:27.700 回答
0

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

于 2008-12-27T19:19:36.747 回答