weixin_40187983
weixin_40187983
采纳率73.6%
2019-07-15 22:15

vb.net 动态开启指定form及 指定windowStatus

5
已采纳

我有一个开启form的地方

其基本上都是一样的格式

不一样的地方在于,frm的名称 和 windowState状态

我想用function来实现

比如我function会返回给我 frmTest,Normal这两个参数

那我要自动生成或是打开以下的语法

frmTest.MdiParent=me
frmTest.show()
frmTest.windowState=formwidowstate.maximized

也就用代带的方式,然后打开被带入的form

图片说明

图片说明

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • wilson1966 wilson1966 2年前

    如要动态show Form ,要先实例化(CreateInstance)
    这边示范一个专案
    建立名为WinFormVB01 项目
    新增MDIParent1.vb 父form
    新增名为 Form1 的Form
    将此项目的启动的Form 由Form1 改为MDIParent1
    在MDIParent1 下建立以下的函数

    
        Private Sub ShowForm(ChildFormName As String, FormText As String, FormName As String)
            Dim ChilForm As Form = New Form()
            ChilForm = CType(Activator.CreateInstance(Type.GetType("WinFormVB01." & ChildFormName)), Form)
            ChilForm.MdiParent = Me
            ChilForm.Text = FormText
            ChilForm.Name = FormName
            ChilForm.WindowState = FormWindowState.Maximized
            ChilForm.Show()
        End Sub
    
    
    

    这个ShowForm 函数有3个参数
    参数1: ChildFormName 对象名
    参数2: FormText Form 显示文字
    参数3: FormName Form 的名称

    在MDIParent1 里任一menu 的事件中,写以下VB程序

    ShowForm("Form1", "frmTest01", "Test")
    

    执行此项目
    点击这个menu
    Form1 就会show 出来
    达成我们动态显示Form 的目的


    楼下的是静态显示form
    敝人是动态显示form
    二者有一点差异

    以动态显示来讲,它可不管未来Form name是什么,只要呼叫此函数即可show Form,但静态就要了,如有新增程序,要重新改程序,再编译程序。

    点赞 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

    这个简单,直接用 Form 作为类型就可以了

    Function OpenForm(f as Form, Key As String)
    ...
    f.MdiParent=me
    f.show()
    f.windowState=formwidowstate.maximized
    End Function

    点赞 评论 复制链接分享