我目前正在研究一些ListBox自定义,以改善我的应用程序的清晰度。基本上,为了达到这个目的,很容易找到“如何”,从而导致我目前的结果如下。
Current display http://www.freeimagehosting.net/uploads/2967c2c763.png
我很高兴与显示器,但...我面临着鼠标滚轮奇怪的行为。我试图找到在这个问题上的信息,我发现这篇文章:
http://aviationxchange.net/wikis/winforms/net-color-listbox.aspx
其中指出,鼠标滚轮的问题是不是唯一的一个(从链接简单的复制/粘贴)
- 水平滚动条消失。 只有固定长度的字符串比控制宽度小 才可以显示 。如果控制 调整大小?
- 如果你想使用鼠标滚轮 ,你可能已经注意到, 所选项目向上和向下移动 不稳定时,滚轮是 移动。
- 可覆盖的方法 OnPaint()OnPaintBackGround()不要 工作。只是他们不是 迷上了事件。背景是仅通过Windows消息绘制的 。
它提供了一些建议来纠正这些问题,但我觉得很沮丧实施所有这些“解决方法”来显示自定义列表。我想念什么?有没有任何winform控件允许我进行相同类型的自定义,但采用更清晰/更优雅的方式?我无法找到更多信息:/
下面,添加了自定义绘图部分的相关部分,但我不确定显示问题是否真的基于overriden方法的实现,更多关于控制本身。
public RecordListBox(): base()
{
mListBox = this;
mListBox.DrawItem += new DrawItemEventHandler(mListBox_DrawItem);
mListBox.MeasureItem += new MeasureItemEventHandler(mListBox_MeasureItem);
this.DrawMode = DrawMode.OwnerDrawFixed;
}
public void mListBox_DrawItem(object sender, DrawItemEventArgs e)
{
if (this.DesignMode) return;
e.DrawBackground();
e.DrawFocusRectangle();
// drawing actions
}
public void mListBox_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = 40;
}
问候,
为了拿出任何形式的解决方案,我认为我们首先需要看到您的自定义实现的源代码,看看有什么可以引起奇怪的行为,你的问题是类似“我做了这个代码,继承人的错误,现在最新的错误呢?“除非我们能看到代码,否则这没有帮助。 – caesay 2010-02-18 23:59:41