机房收费系统—子窗体如何显示

如何让子窗体显示在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:指定窗体的拥有者,可将某个窗体的窗体名传给这个参数,使得这个窗体成为新窗体的拥有者。使用该参数,可以确保对话框在它的父窗体最小化时它也最小化,或者在其父窗体关闭时它也卸载。
  小伙伴们有什么好的方法,欢迎指教!感激不尽!

相关文章

相关标签/搜索