如何让子窗体显示在pictureBox的上面
1.通过站在巨人的肩膀,我发现可以用SetParent函数来解决这一问题。
首先就是对这个函数的声明,在模块中添加函数。
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,ByVal hWndNewParent As Long) As Long
hwndChild是需要显示的子窗体,hwndNewParent是为子窗体指定一个新的容器。
Private Sub registe_Click()
SetParent frmRegister.hWnd,Picture1.hWnd
frmRegister.Show
End Sub
2.本来以为这样就可以了,可是还是出现了问题。如下图:
窗体虽然显示出来了,可是只能看到一点儿,还不能拖动。
解决方法:一开始,我将窗体的Borderstyle属性设置为固定大小,窗体可以完全的显示出来了,可是却没有了标题栏,不能大小化。所以我在让这个窗体显示的时候为他指定一个高度和宽度就可以了。
控件获得焦点问题
1.当窗体加载的时候,令控件获得焦点,就会出现如下错误。
原因是:窗体还没有加载完毕,不能使控件获得焦点,可以设置TabIndex属性。
关于模块的一些知识
1.VB中有三种数据类型:分为值类型和引用类型,还有Nullable类型。
所有的结构体都是值类型,所有的类对象都是引用类型。
值类型:包括大部分的数值对象,比如byte、int、long、datetime等这些类型,这些是不需要用new来声明的。
引用类型:包括大部分的类型对象,比如数组、窗体对象、控件、各种类型库对象。
值类型在创建时不需要使用new来实例化,但引用类型必须使用new实例化,否则会出现对象为空的错误。
'例如:
Dim fLogin As New frmLogin
或
Dim fLogin as frmLogin
Set fLogin as new frmLogin
2. Recordset对象的Open方法原型:
Recordset.Open([Source],[ActiveConnection],[CursorType],[LockType],[Options])
Source:sql语句。
ActiveConnection:连接语句。
CursorType:游标类型。
LockType:锁类型。
Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入基本数据源。也可以使用 AddNew 和 Update 方法将值的数组作为参数传递,同时更新记录的若干字段。
如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用 AddNew、Update 和 Delete 方法所做的更改。调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。
3.窗体的显示方法
窗体名.Show [Modal][,Owerner]
说明:
Modal:指定窗体显示的模式,可以为vbModal(=1)或vbModeless(=0,默认值),vbModal表示将窗体作为模式对话框显示,这种情况下,Show方法后的代码要等到模式对话框关闭之后才能执行,且焦点也不能移动到其他窗体;vbModeless表示将窗体作为无模式对话框显示,这种情况下,焦点能在其他窗体之间转移。
Owner:指定窗体的拥有者,可将某个窗体的窗体名传给这个参数,使得这个窗体成为新窗体的拥有者。使用该参数,可以确保对话框在它的父窗体最小化时它也最小化,或者在其父窗体关闭时它也卸载。
小伙伴们有什么好的方法,欢迎指教!感激不尽!