我试图在VB Express 2013中创建桌面应用程序。用户应该能够使用鼠标更改主窗体大小。但是我希望在不改变尺寸的情况下保持中间的一些控制。
所以,当我让Panel名为Panel1时,它的设置如下:
Me.Panel1.location= New System.Drawing.Point((Me.Width/2)-(Me.Panel1.Width/2),0)
这会让面板保持在中间,但是当我添加一些其他控件时(假设菜单条),设计器页面会重写并且我的设置已经消失。
所以我的问题是: 何时(或在何处)是设置这些设置的最佳时间和方式。我应该像Form_Load事件那样做什么吗?
有没有办法阻止VB Express覆盖我的代码?
答案 0 :(得分:2)
.Designer.vb文件(或C#中的.designer.cs)属于Windows窗体设计器。它不是您的代码。它由工具生成。在大多数情况下,代码由工具生成,您必须不触摸生成的代码。相反,你必须要么触摸"无论是什么原因导致工具生成代码(在本例中为Visual Studio中的设计器表面),或者在其他地方进行代码更改 - 工具无法触及。
例如,双击设计器中的表单,它将为您创建一个Load
事件。添加代码以将Location
更改为该事件:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Panel1.Location = _
New System.Drawing.Point(CInt((Me.Width / 2) - (Me.Panel1.Width / 2)), 0)
End Sub
End Class
对于查看设计器代码的人,他们留下了以下警告:
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
(在C#中,它表示" Designer支持的必需方法 - 不要使用代码编辑器修改此方法的内容。")
答案 1 :(得分:1)
任何调整或影响表单中控件位置的代码都应放在
中Form_Resize事件
通过将代码放在那里,每次调整表单大小时都会执行它。这是你真正想要的。
如果您在Form_Load事件中放置任何调整大小代码,它只会在加载表单时执行!