我正在VB6中构建一个应用程序,其标准表单大小为1024x768,对于将看到它的旧显示器。但是,有些用户可以获得更高的分辨率,而且我希望程序在最大化屏幕时仍然看起来不错。我根本不想调整表单上的元素大小,但我希望重新定位所有内容。我看到它有两个选项,我不喜欢其中任何一个:
我不喜欢第一个,因为呃,我不喜欢第二个,因为它是一个特殊的解决方案。此外,虽然我更喜欢第一个背后的想法,但它有永久性问题:如果我需要返回并更改一些元素,那么我就会重写大量的重新定位代码。而第二个问题有一个类似的问题,我将失去VB6提供的一个好东西:能够看到表单的网格结构。
任何人都知道任何神奇的解决方案吗?
我目前正倾向于PictureBox,因为写作的前景无疑会重写所有定位代码令人沮丧。这里的问题是我已经在表单上有这50多个元素,但我需要它们在PictureBox中。我可以复制和粘贴而不创建它似乎总是想要制作的数组,但是然后我必须重新命名它们...所以我的第二个问题,是否有任何简单的方法来传输一个预先存在的元素形成一个PictureBox?
谢谢大家!
答案 0 :(得分:3)
没有免费的午餐。如果您希望VB6应用程序在调整大小时“看起来不错”,则有在Form_Resize
事件中编写动态大小调整逻辑。否则,正如其他人所说,你会有大的灰色区域,左上角塞满了所有东西。以PictureBox
为中心并不是更好。无论哪种方式,它看起来都是非标准的和业余的。
我为几个VB6应用程序编写了这种类型的代码。我同意这写起来有点令人讨厌,但这并不难。你只需要考虑一下:
“Anchor”类型属性使得VB.NET中不需要这种类型的代码。如果你想到这一点,你会发现,如果一些属性可以处理这个逻辑,那么执行相同操作所需的代码行不会那么复杂。一旦您确定了第一个控件的位置和大小,您就可以将其他控件位置置于该控件的顶部,左侧,宽度和高度之外,然后沿着该表单移动。
当你做对了,我想你会发现它确实值得努力。
答案 1 :(得分:2)
如果元素相对于彼此改变大小或位置,我可能会采用PictureBox
方法。我不明白这会是多么糟糕。
如果控件需要调整大小或重新定位,我会(并且上帝知道我曾经)编写大量调整代码...
答案 2 :(得分:1)
http://www.functionx.com/vbnet/Lesson08.htm
查看Control Containers。正如我在评论中指出的那样,您所描述的第二种解决方案并非临时性 - 它是有组织的。 UI完全是关于容器的。
尽管如此,你对PictureBox的感觉还不错。