首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于自定义绘制里ListBox的2个有关问题

2012-01-21 
关于自定义绘制里ListBox的2个问题我在做winFormListBox自定义的时候,使用DrawModeOwnerDrawVariable用O

关于自定义绘制里ListBox的2个问题
我在做winForm   >   ListBox自定义的时候,使用
DrawMode   =   OwnerDrawVariable
用OnMeasureItem和OnMeasureItem绘图。

现在的问题是OnMeasureItem比较头痛,因为有2个问题没办法解决,看看各位有什么办法没有?还是我哪里做错了

1、OnMeasureItem只会在ListBox被创建的时候调用一次?我希望改变ListBox的大小的时候,里面的Item会随着大小的变化而自动调整高度。结果没有调用OnMeasureItem方法。是不是又是winForm的Bug?

2、OnMeasureItem中指定ItemWidth不可以超出ListBox的长度么?而且ListBox不会产生水平滚动条?这个比较麻烦,有什么好的办法可以让他才生水平滚动条的?


如果觉得分数不够,可以再加。

[解决办法]
to 1、OnMeasureItem只会在ListBox被创建的时候调用一次?我希望改变ListBox的大小的时候,里面的Item会随着大小的变化而自动调整高度。结果没有调用OnMeasureItem方法。是不是又是winForm的Bug?

你可以在ListBox的OnSizeChanged事件中重新调用OnMeasureItem事件。

to 2、OnMeasureItem中指定ItemWidth不可以超出ListBox的长度么?而且ListBox不会产生水平滚动条?这个比较麻烦,有什么好的办法可以让他才生水平滚动条的?

我记得滚动条是随着Control的Item长宽而自动出现的,因此你可以把ItemWidth设得比较大,而进行重绘的时候,考虑的是真实数据的大小,因此ItemWidth并不起作用。
[解决办法]
http://msdn2.microsoft.com/zh-cn/library/system.windows.forms.listbox.onmeasureitem(VS.80).aspx
http://msdn2.microsoft.com/zh-cn/library/system.windows.forms.listbox.measureitem(VS.80).aspx

你可以看看MSDN里面这一部分的资料.里面只说对ItemHeight有限制,ItemWidth是没有特别说明.
[解决办法]
OnMeasureItem,这个事件估计不够用!

热点排行