以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  全局定义的窗体居中问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=48731)

--  作者:jnletao
--  发布时间:2014/4/3 19:32:00
--  全局定义的窗体居中问题
在全局中用VB.NET 定义一个启动窗体,结果怎么调都没法居中,

BeforeOpenProject
Dim frm As New FormReg
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
frm.TopMost = True \'或 e.HideSplashForm = True
frm.ShowDialog() \'模式打开


\'Me.Top = (My.Computer.Screen.Bounds.Height - Me.Height) / 2 \'绝对居中
\'Me.Left = (My.Computer.Screen.Bounds.Width - Me.Width) / 2


用此方法 可以居中,不过启动时有 位移闪动!

代码都是从网上找到,实在找不到解决方法了,求老师们给指教下。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:0登录窗口vb.net自定义.zip


[此贴子已经被作者于2014-4-3 19:32:40编辑过]

--  作者:jnletao
--  发布时间:2014/4/4 8:06:00
--  
图片点击可在新窗口打开查看
--  作者:Bin
--  发布时间:2014/4/4 8:36:00
--  
测试打开就在正中啊,没啥问题.
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
这句是很基本的代码,不应该会有问题的.

可能是你.net或者系统有问题也说不准.你换台电脑测试一下看看.

--  作者:jnletao
--  发布时间:2014/4/4 8:50:00
--  
全局 里的 代码 在VB.NET  预览居中也是正常的,就是 放在 BeforeOpenProject  里不居中了

Dim frm As New LoginWindow
frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen 
frm.ShowDialog() \'模式打开



图片点击可在新窗口打开查看此主题相关图片如下:qq截图20140404084550.png
图片点击可在新窗口打开查看

如果用这段代码
Dim frm As New LoginWindow
frm.Top = (My.Computer.Screen.Bounds.Height - frm.Height) / 2 \'绝对居中
frm.Left = (My.Computer.Screen.Bounds.Width - frm.Width) / 2
frm.ShowDialog() \'模式打开


在foxtable打开也是居中,不过有位移闪动,好像是 重新调整了一下位置。

--  作者:有点甜
--  发布时间:2014/4/4 11:21:00
--  

把你的 LoginWindow_Load 事件换成

 

Public Sub New()

 

End Sub

 

原因查看form的启动时事件执行顺序


--  作者:jnletao
--  发布时间:2014/4/4 13:10:00
--  
谢谢有点甜老师,果真好了, 又学一招图片点击可在新窗口打开查看, 
 刚才我没找到办法,用的透明度切换模拟的。

--  作者:jnletao
--  发布时间:2014/4/4 13:27:00
--  
有点甜老师,我想把我原来的 透明度渐变效果加进去,发现 采用 NEW()方法后 透明度不管了,请问如何解决?
Public Sub New()
MyBase.New()
\'Private Sub LoginWindow_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim xml As New CSysXML("LoginSet.XML")
Dim Wwidth As Integer
Dim Wheight As Integer
Dim Xpos As Integer
Dim Ypos As Integer
Me.KeepName = New System.Windows.Forms.CheckBox
Me.CUserName = New System.Windows.Forms.ComboBox
Me.TPassWord = New System.Windows.Forms.TextBox
Me.BtnOk = New System.Windows.Forms.Button
Me.BtnCanel = New System.Windows.Forms.Button
Me.SuspendLayout()
………………
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None \'无边框,不可移动
Me.BackgroundImage = Image.FromFile(Fwinbg)
Me.Icon = New System.Drawing.Icon(ProjectPath & "images\\Users32.ico")
Me.Name = "LoginWindow"
Me.Opacity = 0
Me.StartPosition = System.Windows.Forms.FormStartPosition.WindowsDefaultBounds \'System.Windows.Forms.FormStartPosition.CenterScreen
Me.Top = (My.Computer.Screen.Bounds.Height - Me.Height) / 2 \'绝对居中
Me.Left = (My.Computer.Screen.Bounds.Width - Me.Width) / 2
Me.Text = "登录"
Me.TopMost = True
Dim I As Double
For I = 0.01 To 1 Step 0.01
    Me.Opacity = I
    System.Windows.Forms.Application.DoEvents()
    System.Threading.Thread.Sleep(5)
Next
Me.Opacity = 1
Me.ResumeLayout(False)
Me.PerformLayout()

End Sub
Friend WithEvents KeepName As System.Windows.Forms.CheckBox
……………………



--  作者:有点甜
--  发布时间:2014/4/4 14:00:00
--  

 new() 构造方法,用来初始化窗口数据

 

 load() 事件,用来对窗口外观等修改。

 

 启动过程中......还有其他事件,建议找相关资料看一下