vb点虐 窗体移动 vb窗体位置

如何在VB.NET中限制窗体移动

VB中就有呀叫MDI窗体,你选择“工程—添加MDI窗体”就可以了,然后把你刚刚的FORM1窗体设为MDI的子窗体就在它的属性里MDIChild设为True就可以了

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网络空间、营销软件、网站建设、延长网站维护、网站推广。

vb点虐 窗体的移动问题

Public X, Y As Integer

Private Sub Form1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown

X = e.X : Y = e.Y

End Sub

Private Sub Form1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove

If X = e.X And Y = e.Y Then Exit Sub

If e.Button = Windows.Forms.MouseButtons.Left Then

Me.Left = Me.Left + e.X - X

Me.Top = Me.Top + e.Y - Y

End If

End Sub

VB中,当单机一个命令按钮事,使窗体移动到屏幕的左上角,怎样编写代码?

Private Sub Command1_Click()

Me.Top = 0

Me.Left = 0

'Me 表示本窗体,如果是其他窗体可以替换,如Form2.top=0

End Sub

1991年,微软公司推出了 Visual Basic 1.0。当时引起了很大的轰动。这个连接编程语言和用户界面的进步被称为Tripod(有些时候叫做Ruby),最初的设计是由阿兰·库珀(Alan Cooper)完成的。

许多专家把 VB 的出现当做是软件开发史上的一个具有划时代意义的事件。在当时,它是第一个“可视”的编程软件。这使得程序员欣喜之极,都尝试在VB的平台上进行软件创作。

微软也不失时机地在四年内接连推出 2.0、3.0、4.0 三个版本。并且从 VB 3.0 开始,微软将Access的数据库驱动集成到了 VB 中,这使得 VB 的数据库编程能力大大提高。从 VB 4.0 开始,VB 也引入了面向对象的程序设计思想。VB 功能强大,学习简单。而且,VB 还引入了“控件”的概念,使得大量已经编好的 VB 程序可以被我们直接拿来使用。

2002年开始,微软将.NET Framework与 Visual Basic 结合而成为 Visual Basic .NET (vb 点虐 ),重新打造 VB,新增许多特性及语法,又将 VB 推向一个新的高度。最新版本 Visual Basic 2012 也将带来许多令人期待的新功能。

通过几年的发展,它已成为一种专业化的开发语言和环境。用户可用Visual Basic 快速创建Windows程序,并可编写企业水平的客户端/服务器程序及强大的数据库应用程序。

VB.NET怎么可以限制窗体不能被鼠标随便拖动位置

很简单,通过WindowsAPI,删除窗体菜单项就行了

首先在窗体类中声明API:

Declare Function GetSystemMenu Lib "user32" (ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr

Declare Function RemoveMenu Lib "user32" (ByVal lngHmenu As IntPtr, ByVal nPosition As Integer, ByVal wFlags As Integer) As Integer

其次声明API参数常量:

Const MF_BYPOSITION As Integer = H400

然后在窗体类中写入过程:

Private Sub UserForm_Initialize_stopmove() '禁止窗体移动

  Dim lngHwnd As IntPtr

  Dim lngHmenu As IntPtr

  lngHwnd = Me.Handle

  If lngHwnd 0 Then

      lngHmenu = GetSystemMenu(lngHwnd, False)

      RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0代表菜单中从上往下数第一个菜单项

  End If

End Sub

Private Sub UserForm_Initialize_onmove() '恢复窗体移动

  Dim lngHwnd As IntPtr

  Dim lngHmenu As IntPtr

  lngHwnd = Me.Handle

  If lngHwnd 0 Then

      lngHmenu = GetSystemMenu(lngHwnd, True)

RemoveMenu(lngHmenu, 0, MF_BYPOSITION) '这里的0与禁止代码中的数值同步,原因时虽然表面上删除了菜单项,实则为隐藏了菜单项,各个菜单的索引值并没有变,所以0依然代表初始菜单的第一个菜单项,即被删除的那个菜单项

  End If

End Sub

然后如果你的窗口菜单是动态变化的,建议声明常数:

Const MF_BYPOSITION As Integer = H0

然后使用相关的Windows功能的常数进行删除菜单。常数需要自行查看winuser.h头文件

如果找不到该头文件,可以看这里:网页链接

其余信息详见MSDN:网页链接

最后说一下,不建议前面网友说的重写WndProc的方法,因为这样拦截标题栏点击消息会导致窗体本身的菜单也无法显示出来,有损窗体功能,并且像双击左上角图标关闭窗体这样的功能也会跟着拦截消息的操作一起被吞掉。


分享文章:vb点虐 窗体移动 vb窗体位置
当前地址:http://scyanting.com/article/ddjgphg.html