登录
注册
论坛
技术博客
相册
搜索
帮助
会员
界面
简洁版本
在线
深博技术论坛
【DotNet技术区】
『VB.NET技术』
VB.NET窗体操作技巧两则
帖子标题
【DotNet技术区】
『
Winson.Framework
』
『ASP.NET程序设计』
『C#技术』
『VB.NET技术』
『ADO.NET数据库技术』
『Discuz! NT相关技术』
【网页编程】
『HTML/CSS技术』
『Javascript/Ajax技术』
【闲聊区】
〖心得体会〗
〖闲话家常〗
〖广而告知〗
【站务区】
『最新公告』
『站务管理』
1
/ 1 页
1
跳转
页
查看:
1272
VB.NET窗体操作技巧两则
z342318151
个人空间
相册
组别:
版主
性别:
来自:
积分:
39
帖子:
39
注册:
2008-04-29
2008-05-05 17:14
|
只看楼主
树型
|
收藏
|
小
中
大
1
VB.NET窗体操作技巧两则
undefined 一、如何拖动没有边框的窗体?
*{E{übbs.szblogs.com|ú~ùO}
这个功能在VB6中,需要借助于API函数才能实现。而在VB.NET中,凭自己的功能就能实现。首先设置窗体的FormBorderStyle属性为none以去掉窗体的边框,然后在窗体上添加一个按钮。窗体中的代码如下:
*{E{übbs.szblogs.com|ú~ùO}
Public
Class Form1
Class
Form1
Inherits
System.Windows.Forms.Form
Private
mouse_offset
As
Point
Private
Sub form1_MouseDown()
Sub
form1_MouseDown(
ByVal
sender
As
Object
,
ByVal
e
As
System.Windows.Forms.MouseEventArgs)
Handles
MyBase
.MouseDown
mouse_offset
=
New
Point(e.X, e.Y)
End Sub
Private
Sub form1_MouseMove()
Sub
form1_MouseMove(
ByVal
Sender
As
System.Object,
ByVal
e
As
System.Windows.Forms.MouseEventArgs)
Handles
MyBase
.MouseMove[
/
code]
'
按住鼠标左右键均可拖动窗体[code] If e.Button = MouseButtons.Left Or e.Button = MouseButtons.Right Then
Dim
mousePos
As
Point
=
Sender.findform().MousePosition[
/
code]
'
获得鼠标偏移量
[code]mousePos.Offset(
-
mouse_offset.X,
-
mouse_offset.Y)[
/
code]
'
设置窗体随鼠标一起移动
[code]Sender.findform().Location
=
mousePos
End
If
End Sub
Private
Sub BtnExit_Click()
Sub
BtnExit_Click(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click[
/
code]
'
关闭窗体[code]Me.Close()
End Sub
End Class
*{E{übbs.szblogs.com|ú~ùO}
二、多个窗体之间互相调用
*{E{übbs.szblogs.com|ú~ùO}
在VB6中,多个窗体之间可以很方便地互相调用,如:在Form1中,只需要用一条“Form2.Show” 语句就能显示窗体Form2。然而在VB.NET中窗体处理机制发生了很大的变化:在访问窗体之前,你必须进行窗体实例化;如果在项目中有多处代码访问同一窗体,则你必须把它的同一实例指针传递给这些代码,否则新创建的窗体实例就不再是原先的窗体了。
*{E{übbs.szblogs.com|ú~ùO}
下面的代码实现窗体Form1和Form2之间互相调用,Form1为主窗体。Form1上的按钮BtnShowFrm2的标题为“显示Form2”,Form2上的按钮BtnShowFrm1的标题为“显示Form1”。
*{E{übbs.szblogs.com|ú~ùO}
1、Form1中的代码:
*{E{übbs.szblogs.com|ú~ùO}
Public
Class Form1
Class
Form1
Inherits
System.Windows.Forms.Form[
/
code]
'
创建Form2的一个新的实例[code]Dim Frm2 As New Form2()
Public
Function Instance2()
Function
Instance2(
ByVal
frm
As
Form2)
Frm2
=
frm
End Function
Private
Sub BtnShowFrm2_Click()
Sub
BtnShowFrm2_Click(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
BtnShowFrm2.Click[
/
code]
'
以下语句保证在Form2以及其他窗体中访问Form1时,
'
都将得到Form1的同一个窗体实例。[code]Frm2.Instance(Me)
Frm2.Show()
Me
.Hide()
End Sub
End Class
[
/
code]
2
、Form2中的代码:[code]
Public
Class Form2
Class
Form2
Inherits
System.Windows.Forms.Form
Dim
frm1
As
Form1[
/
code]
'
借助一个新增的Instance属性来生成窗体frm1的实例
[code]
Public
Function Instance()
Function
Instance(
ByVal
frm
As
Form1)
frm1
=
frm
End Function
Private
Sub BtnShowFrm1_Click()
Sub
BtnShowFrm1_Click(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
BtnShowFrm1.Click
Me
.Hide()
frm1.Show()
End Sub
Private
Sub Form2_Closed()
Sub
Form2_Closed(
ByVal
sender
As
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Closed[
/
code]
'
如果Form2被关闭,则设置Form1的按钮BtnShowFrm2不可用。
[code]frm1.BtnShowFrm2.Enabled
=
False
frm1.Show()
End Sub
End Class
*{E{übbs.szblogs.com|ú~ùO}
以上代码全部在Windows XP,VB.NET下调试通过
*{E{übbs.szblogs.com|ú~ùO}
z342318151 最后编辑于 2008-05-06 14:26:16
发送短消息
查看公共资料
查找该会员全部帖子
UID:
790
精华:
0
威望:
0
金钱:
7.5 元
状态:
离线
winson
winson
个人空间
相册
组别:
管理员
性别:
来自:
深圳
积分:
820
帖子:
628
注册:
2007-07-14
2008-05-26 09:12
|
树型
|
收藏
|
小
中
大
2
回复:VB.NET窗体操作技巧两则
不错,支持
*{E{übbs.szblogs.com|ú~ùO}
随风飘飘天地任逍遥!
http://winson.szblogs.com
http://winsonet.cnblogs.com
发送短消息
查看公共资料
查找该会员全部帖子
UID:
1
精华:
20
威望:
92
金钱:
137.6 元
状态:
离线
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
论坛跳转...
【DotNet技术区】
『
Winson.Framework
』
『ASP.NET程序设计』
『C#技术』
『VB.NET技术』
『ADO.NET数据库技术』
『Discuz! NT相关技术』
〖插件模板〗
【网页编程】
『HTML/CSS技术』
『Javascript/Ajax技术』
【闲聊区】
〖心得体会〗
〖闲话家常〗
〖广而告知〗
【站务区】
『最新公告』
『站务管理』
我的主题
我的帖子
我的精华
我的空间
我的相册
帖子标题
空间日志
相册标题
作 者