超高分请教使用DevExpress的人,如何调整DockManager中DockPanel的标签大小。

屡败屡战数马援 2006-06-22 10:55:16
DevExpress中DockManager是类似于VS2003/2005中解决方案资源管理器那样的自动隐藏窗口控件。
它非常好用,但是我在使用过程中出现了问题。
我已经成功做了一个类似的解决方案资源管理器窗口,在主窗体的右边,窗口的图标、弹出,隐藏等功能都非常不错,但是我发现在窗口隐藏时显示的文字标签出现了问题。

大家都知道,VS2003/2005中当滑动窗口隐藏起来的时候,会有一个显示图标和文字的标签,它接受用户鼠标的移动事件,而我使用的DockManager就出现了这个问题。

问题就是标签太小,大概标签文本是中文的原因,当窗口隐藏后,显示的标签只有显示的文字大小,文字距离标签的间距一点也没有,看起来标签非常小,而且也很难看。这个标签在DevExpress的文档中被称作DockPanelLabel,意思是当DockPanel隐藏后的标签。

请教高手:如何定义DockPanelLabel的大小?谢谢,给出解决办法的人至少100分!
...全文
2330 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
问题已经解决。

原因是DevExpress中的DockManager中的代码有问题。

在绘制当DockPanel隐藏后的DockPanelLabel的时候,通过VS2005的单步执行,我发现Devexpress.XtraBars.Docking.HideBarPainter类中的计算代码出现了问题。

原因是这个代码通过复杂的调用最终调用了System.Drawing.Graphics.MeasureString()方法,这个方法负责测量传入的一个string参数的大小,返回一个SizeF结构,方法返回后,在上面的HideBarPainter类里面根据返回的大小在加上一个文字外围的空白值当作按钮的空白。这个空白值类似于Html中CSS里面控制对象样式的Padding值。问题就是这个值太小。

我猜想大概DevExpress开发这个控件的时候,使用的字体全部都是英文字体,所以这个空白值对于英文字体足够了,但是对于中文字体来说,这个简单的判断根本不能处理中文字体的空白,导致这个控件的隐藏标签显示中文的时候及其难看,无论加不加图标都是这个原因。最恐怖的就是控件根本没有Padding这个属性,根本无法修改,只能在源代码里面修改。
apcad 2006-06-23
  • 打赏
  • 举报
回复
的确是这样的,现在看来,好像还没有办法解决吧,毕竟DevExpress还有很多功能值得完善,比如多个UserControl共用一个BarManager就是一个不太好实现的问题。
关于你的问题,可以这样考虑:对每一个DockPanel使用image,这样在滑动窗口隐藏的时候将只显示图标,避免了只有文字的拥挤问题,你说呢?其实我们使用的VS .NET的Solution Explorer、Properties Window等窗口在隐藏的时候就是只显示图标。
qyfjl 2006-06-23
  • 打赏
  • 举报
回复
帮你顶一下.原来用过DevExpress的DotNetBar. 哪个控件安装好后有例子吧,好像有几个例子是专门讲如何停靠窗体的,没仔细研究过.
cime63 2006-06-22
  • 打赏
  • 举报
回复
用的是coderush
amandag 2006-06-22
  • 打赏
  • 举报
回复
up

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧