网站建设资讯

NEWS

网站建设资讯

vb.net禁止拖动 vb拖动控件

在VB.NET2005中如何禁止有鼠标拖动改变界面大小?

Private

创新互联客户idc服务中心,提供四川乐山服务器托管、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。

Sub

Form_Resize()

'在窗口的改变大小时所触发的事件

On

Error

Resume

Next

'有错误跳到下一条继续执行

Form1.Height

=

10185

'设定窗口高

Form1.Width

=

8700

'设定窗口宽

End

Sub

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.NET中限制窗体移动

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

在.net里如何锁定窗体,拖动标题栏,使其不移动?

实现方法如下:

1.引用命名空间

using System.Runtime.InteropServices;

2.声明如下变量:

public class Form1 : System.Windows.Forms.Form

{

//.....

[DllImport("user32.dll",EntryPoint="GetSystemMenu")]

extern static IntPtr GetSystemMenu(IntPtr hWnd, IntPtr bRevert);

[DllImport("user32.dll",EntryPoint="RemoveMenu")]

extern static int RemoveMenu(IntPtr hMenu, int nPos, int flags);

//.....

}

3.在Form的构造函数里加入代码

public Form1()

{

const int MF_BYPOSITION = 0x0400;

const int MF_REMOVE = 0x1000;

FormBorderStyle = FormBorderStyle.FixedSingle;

MaximizeBox = false;

MinimizeBox = false;

RemoveMenu(GetSystemMenu(Handle,IntPtr.Zero),1,MF_BYPOSITION |MF_REMOVE);

}

就OK啦


本文名称:vb.net禁止拖动 vb拖动控件
网站链接:http://njwzjz.com/article/hijspo.html