首先我明白界面上如果没有必要,尽量不要放太多的控件,但我这里是必须要放,因此我想讨论肿么实现。我的开发环境是VC++ MFC。C#不太熟,不过如果有朋友力荐C#的话我会换过去的。
最终的程序是要做成Visual Studio那种停靠面板风格的,不过我目前对dialog风格的界面比较熟悉,所以干脆两种风格的都讨论讨论。这里有一个例子,是一个停靠面板风格的成熟软件,先看其中一个面板。
可折叠的表单
这是一个内容较少的面板,现在是停靠在右侧的。由3个看似列表的元素构成,点击列表名称左边的减号可以折叠对应的列表,折叠后的外观是这样:
第一组问题:
请问这种界面有没有现成的控件可以做?如果没有,自己创建用什么思路?
提这个问题是因为列表内不仅可以显示、输入数据,还可以放tick box控件和下拉菜单。注意Object Specific列表里面的Layer和Net条目,鼠标不点击的时候就像第一张图那样,你看我点击选中之后,值的右侧会出现下拉菜单的按钮。
点击那个按钮之后会出现一个列表:
在菜单中点选一项即可更新文本框中的内容。不知道这个是怎么实现的,貌似ListBox本身不允许插入其它控件。
第二组问题:
请问如果页面上的控件过多,对话框或浮动面板的面积排不下,如何让对话框或面板出现水平和垂直滚动条?如何在拖动滚动条时让显示区域内的所有内容向对应的方向整体移动?
可以参考另一个浮动面板:
可见这个面板整体是一个列表,抬头的tag是可点击的,单击后会把整个列表内容按当前列进行升续排列,再单击一次则降序排列。这个列表长宽都超出了面板尺寸,因此在底端和右侧都有滚动条。这里可以看到Color那一列里有取色控件,双击后可以打开调色板对话框来选择颜色。再次好奇这是肿么加进去的。
从这个面板上看起来纵向与横向的滚动条是借助列表来实现的。我好奇如果不希望主区域显现为列表的结构,而是一个图片之类的东东,还可以用什么其它的方式对面板或对话框添加同样的滚动条?我同样可以在那个区域里面放按钮、下拉菜单、选择框之类的控件吗?
VS很菜,请多指教,谢谢。