更换VB.NET窗体标题栏的方法

开发 后端
这里介绍无标题栏的窗体的拖动问题,在特殊窗体的应用中,我们有时需要把VB.NET窗体标题栏屏蔽掉,以窗体换上自己的外壳。

#t#VB.NET经过长时间的发展,很多用户都很了解VB.NET窗体标题栏了,这里我发表一下个人理解,和大家讨论讨论。VB.NET做为VB6的升级版本,具备了许多新的功能,它可以简便快捷地创建 .NET 应用程序(包括 XML Web services 和 ASP.NET Web 应用程序),还是一个功能强大的面向对象的编程语言(如继承、接口和重载)。新的语言功能包括自由线程处理和结构化异常处理。VB.NET 还完全集成了.NET 框架和公共语言运行库,.NET 框架和公共语言运行库共同提供语言互操作性、垃圾回收、增强的安全性和改进的版本支持。可以说是一个划时代的产品!

无标题栏的窗体的拖动问题,在特殊窗体的应用中,我们有时需要把VB.NET窗体标题栏屏蔽掉,以窗体换上自己的外壳。是,当去掉了VB.NET窗体标题栏后,移动窗体就成了一个问题。我们还是来看一下在VB6中的实现,VB6中实现(借助API函数SendMessage)在设计时将窗体的BorderStyle属性设置为0-none

  1. PrivateDeclareFunction SendMessage Lib "User32" Alias "SendMessageA" 
    (ByVal hWnd AsLong, ByVal wMsg AsLong, ByVal wParam AsLong, ByVal lParam As Any) AsLong  
  2. PrivateDeclareSub ReleaseCapture Lib "User32" ()  
  3. Const WM_NCLBUTTONDOWN = &HA1  
  4. Const HTCAPTION = 2 
  5. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)  
  6. Dim lngReturnValue AsLong  
  7. If Button = 1 Then  
  8. 'Release capture  
  9. Call ReleaseCapture()  
  10. 'Send a 'left mouse button down on caption'-message to our form  
  11. lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&)  
  12. EndIf  
  13. EndSub  
  14. PrivateSub Form_Paint()  
  15. Me.Print("Click on the form, hold the mouse button and drag it")  
  16. EndSub 

在VB.NET窗体标题栏中,这次需要借助API SendMessage了,在设计时将Form.FormBorderStyle 属性设置为None,然后添加以下代码:

  1. DeclareFunction SendMessage Lib "user32" Alias "SendMessageA" 
    (ByVal hwnd AsInteger, ByVal wMsg AsInteger, ByVal wParam AsInteger, 
    ByVal lParam AsInteger) AsInteger  
  2.    
  3. PrivateDeclareSub ReleaseCapture Lib "User32" ()  
  4. Const WM_NCLBUTTONDOWN = &HA1  
  5. Const HTCAPTION = 2 
  6.    
  7. PrivateSub Form1_MouseDown(ByVal sender AsObject, 
    ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMyBase.MouseDown  
  8. ReleaseCapture()  
  9. SendMessage(Me.Handle.ToInt64, WM_NCLBUTTONDOWN, HTCAPTION, 0)  
  10. EndSub 
责任编辑:佚名 来源: 博客园
相关推荐

2010-01-07 16:51:56

VB.NET窗体钩子

2009-10-09 16:54:03

VB.NET窗体

2009-10-14 15:34:29

VB.NET窗体编程模

2009-10-14 15:20:21

VB.NET窗体指针

2010-01-11 15:12:30

VB.NET特殊窗体

2009-10-14 13:56:05

VB.NET数据窗体

2010-01-13 09:31:39

VB.NET窗体打印

2009-10-16 09:35:24

VB.NET制作透明窗

2009-10-14 14:50:16

VB6.0VB.NET

2009-11-10 15:07:11

VB.NET窗体

2010-01-13 15:52:59

VB.NET浮动窗体

2009-10-26 17:53:50

VB.NET新窗体

2010-01-14 19:09:02

VB.NET动态标题

2010-01-11 10:44:47

VB.NET多窗体

2009-10-12 17:32:36

VB.NET窗体应用技

2010-01-11 15:31:04

VB.NET拖动窗体

2009-11-03 17:35:05

VB.NET窗体透明度

2009-11-03 17:31:01

VB.NET窗体

2010-01-08 14:07:47

VB.NET窗体传值

2009-04-30 13:24:45

VB.NET 2008窗体应用实例
点赞
收藏

51CTO技术栈公众号