仅调整表单上某些控件的最佳方法是什么?

时间:2014-10-03 20:50:09

标签: visual-studio vb6

我正在编写聊天/服务器客户端代码,而且我在尝试调整大小正常工作时遇到了一些问题。

我的聊天表格看起来像这样。

enter image description here

我希望保持顶部标签,文本框和按钮的大小和位置相同。我想调整您键入消息的底部的聊天文本框,列表框和文本框。发送按钮我想保持相同的大小,并始终在发送文本框的右侧。我很难弄清楚如何编写代码调整大小部分的代码。

我真的可以使用一些帮助,我已经尝试了许多类似的东西。

txtchat.height = me.scaleheight - 100在那里添加100以尝试取消一些表单顶部的控件。也尝试了

txtchat.height = me.scaleheight - txtsend.height - 100还有很多其他事情。我想我只是不明白这个调整大小是如何工作的。

3 个答案:

答案 0 :(得分:0)

正如我所说,这在.Net中会更简单(Winforms有自动化的对接面板),但这是你在VB6中需要做的事情:

我没有安装VB6,所以我不打算写出代码,但步骤应该足以让它正确。

我假设txtSend是发送按钮左侧的文本框。要获得聊天框的大小,您需要:

Bottom_area_height = Statusbar.Height + Statusbar_Padding + _
    txtSend.Height + txtSend_Padding
txtChat.Height = ScaleHeight - (txtChat.Top + Bottom_area_height) ' Fixed here
txtChat.Width = ScaleWidth - lstUsers.Width

txtSend.Top = ScaleHeight - Bottom_area_height
txtSend.Width = ScaleWidth - btnSend.Width

btnSend.Top = txtSend.Top

填充值是控件之间的垂直间隙 - 状态栏填充看起来像2个网格单元格,而txtSend的填充似乎是网格单元格的一半。您没有正确使用网格,这使得很难看到控件的距离。

修改

要添加水平填充,只需移动控件即可。左边缘到你想要左边距的位置,然后从文本框的宽度减去两次边距(以考虑两个边距)。

txtChat.Width = ScaleWidth - (txtChat.Left * 2 + User_list_padding)
txtSend.Width = ScaleWidth - (txtSend.Left * 2 + Send_button_padding)
btnSend.Left = ScaleWidth - (btnSend.Width + Send_button_padding)

填充值是控件之间的水平间隙,如果你想要的话。

答案 1 :(得分:0)

Dim intAreaHeight As Integer

intAreaHeight = stsBar.Height + 40 + txtSend.Height

txtChat.Height = Me.ScaleHeight - 1450
txtChat.Width = Me.ScaleWidth - lstUsers.Width

lstUsers.Height = Me.ScaleHeight - 1450
lstUsers.Left = txtChat.Width + 40

txtSend.Top = Me.ScaleHeight - intAreaHeight + 20
txtSend.Width = Me.ScaleWidth - cmdSend.Width

cmdSend.Left = txtSend.Width + 40
cmdSend.Top = txtSend.Top

这可以得到这个结果,因为你可以看到左边的填充和右边填充在表单的一边,根本没有填充。我似乎无法找到一个很好的解决方案来获得填充。

enter image description here

修改: 下面更新的代码非常感谢您的帮助。

Dim intAreaHeight As Integer

intAreaHeight = stsBar.Height + 40 + txtSend.Height

txtChat.Height = Me.ScaleHeight - 1450
txtChat.Width = Me.ScaleWidth - lstUsers.Width - (txtChat.Left * 2 + 40)

lstUsers.Height = Me.ScaleHeight - 1450
lstUsers.Left = txtChat.Width + 80

txtSend.Top = Me.ScaleHeight - intAreaHeight + 20
txtSend.Width = Me.ScaleWidth - cmdSend.Width - (txtSend.Left * 2 + 40)

cmdSend.Left = txtSend.Width + 80
cmdSend.Top = txtSend.Top

答案 2 :(得分:0)

怎么样:

只需调整您想要调整大小的内容。

声音"最好"对我来说。我曾试图希望Windows会读懂我的想法,但我还没有运气。