vb.net界面中窗体 vb打开窗体的代码

如何给VB.NET窗体添加子窗体?

直接添加一个MID父窗体或在已有窗体的属性中找到IsMDIContainer属性,然后设置为True,然后创建第二个窗体 ,需要加载子窗体的时候:

成都创新互联公司云计算的互联网服务提供商,拥有超过13年的服务器租用、德阳电信服务器托管、云服务器、虚拟空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、虚拟空间、域名与空间、VPS主机、云服务器、香港云服务器、免备案服务器等。

Dim NewMDIChild As New Form2

NewMDIChild.MdiParent = Me

NewMDIChild.Show()

Public Shared Sub CheckMDIChildForm(ByVal MDIForm As Windows.Forms.Form, ByVal MDIChildForm As Windows.Forms.Form, ByVal MDIChildFormName As String)

If MDIForm.MdiChildren.Length  1 Then

'如果没有任何一个MDI子窗体,则创该MDI子窗体的窗体实例

Dim MDIChildFrm As Windows.Forms.Form = MDIChildForm ' 定义MDI子窗体

MDIChildFrm.MdiParent = MDIForm '指定父窗体

MDIChildFrm.Show() '打开窗体

Exit Sub

Else

Dim x As Integer

Dim frmyn As Boolean

For x = 0 To (MDIForm.MdiChildren.Length) - 1

Dim tempChild As Windows.Forms.Form = CType(MDIForm.MdiChildren(x), Windows.Forms.Form)

If tempChild.Name = MDIChildFormName Then

'检测到有该MDI子窗体,设为激活 并退出循环

frmyn = True

tempChild.BringToFront()

Exit For

Else

frmyn = False

End If

Next

If Not frmyn Then

'在打开的窗体中没检测到则新建

Dim MDIChildFrm As Windows.Forms.Form = MDIChildForm ' 定义MDI子窗体

MDIChildFrm.MdiParent = MDIForm '指定父窗体

MDIChildFrm.Show() '打开窗体

End If

End If

End Sub

在VB.NET中怎么实现多窗体同步

这是一个有趣的问题 我保证某些聪明的编程好手会建议我使用委托 在这种事情发生之前 让我们 先探究一下这个问题的几种解决方案 假定我有两个窗体 每个窗体都有两个 textbox 控件 txt stData 和 txt ndData 我怎样才能保持这两个窗体中的控件同步呢?对于我们讨论的问题来说 有两个或十个窗体都不重要 问题是相同的 第一个办法相对简单 事实上 它甚至比我们直接使用委托更为简单 我想委托有时会给人用牛刀杀鸡的感觉 首先 我建立一个类它包含我希望与应用程序中的所有窗体共享的属性(参见 Figure ) 例如 MyData 和 MoreData 拥有每个窗体都能显示的数据 我将很快回到这个类来 第二 正如我早先提到的我用相同的控件(txt stData 和 txt ndData)建立了两个窗体 你可以参考 Figure 的布局 两个窗体都有完全相同的数据 并且我将很快解释为什么 下面 我建立一个名为 modGeneral 的模块并加入下面一行代码 Friend DataStuff As DataClass 这一行代码为我的新类 DataClass 创建了一个友元变量 使你可以完全访问程序集 对这个简单例子来说 也就是指完整的应用程序 然后我添加了下面的代码到 Form 的 Load 事件 DataStuff = New DataClass Me txt stData DataBindings Add( Text DataStuff MyData ) Me txt ndData DataBindings Add( Text DataStuff MoreData ) 第一行建立一个 DataClass 新实例 下面两行代码将数据绑定到 textbox 控件 对这个窗体而言 就这么些操作! 现在 你怎样让它们与 Form 和其它窗体上的数据同步呢?将下面两行加入到 Form 的窗体load 事件中去 Me txt stData DataBindings Add( Text DataStuff MyData ) Me txt ndData DataBindings Add( Text DataStuff Moredata ) 这个方法容易确保所有窗体上的几乎任何类型的数据处于同步状态 你可以简单地将控件绑定到某个类的相同实例上 这就行了 现在来看另一个方法 我创建了一个名为 frmBase 的新窗体 这时我在上面放一个 textbox (txtNextData)和 label 我想 让应用程序的每个窗体都共享这个 textbox 和 label 并且我希望它们互相之间保持同步 于是我重建这个工程 通过从新的 frmBase 中的继承 我创建了 Form 和Form 因此它们继承了所有新的控件 但是我怎样能保持这些控件同步呢?这时必须写一点代码去达到此效果 这些代码在单个的类中 通过简单地调用一个函数而被复用 Figure 中的代码展示了这个称为 modGeneral 模块 它的第一个任务是定义两个变量 MyForms 和 localNextData MyForms 是一个 集合 它将包含我想要同步的窗体列表 localNextData变量将储存所有我想要在窗体里显示的数据 注意这些变量可以驻留于某个类中而不是某个模块里 AddForm 过程来自 modGeneral 带一个窗体实例参数 并将其加入 MyForms 集合中 我将在UpdateControlsNextData 过程中使用这个 集合以决定哪些窗体要更新 AddForm 也调用UpdateControlsNextData 来确保一个新窗体是用正确的数据更新的 modGeneral 中的其它代码是 NextData 属性 这些属性的 set 存取器更新 localNextData 并也调用 UpdateControlsNextData 去同步所有窗体 这时所有我需要做的是 在想要改变它时设置 NextData 通过调用 UpdateControlsNextData 所有窗体将被更新 第三个方法是定制链接 它是第二个方法的精华版 我创建它以获得多一些窗体控件处理的灵活性 例如 我只想跟踪和处理某些窗体 这些窗体包含必须同步的控件 这个方法 还可以让我自己定义拟同步的控件 并且只处理这些控件的窗体 我为这个办法添加了另一个模块 (modGeneralv ) 如 Figure 所示 该模块包括一个集合(MyFormsToUpdate) 其中包含所有我想要同步的窗体 这个模块 还有一个新的数组 (ControlsToUpdate) 它提供一个我要同步的控件列表 该数组的定义如下 Private ControlsToUpdate() As String = { txtCustomer txtAddress txtName } 这个模块里有一个新的替代 AddForm 的改良版本 叫做 AddFormToUpdate 该方法工作方式与AddForm 类似 但现在它只添加拥有一个或多 个 ControlsToUpdate 数组中控件的窗体 因此只有那些含有特定控件的窗体在更新集合中 它使我可以从每个窗体中调用该函数 如果我决定以后添加某个特定的控件 它将会被自动添加到窗体列表 我只需对窗体代码做细小的改动便可以实现 这个模块还包含 UpdateControlsOnAllForms 过程 它执行更新 代替上一个方法中使用的一个应用程序级变量 我现在使用主窗体的概念 因此我可以将那个窗体的值拷贝到集合中的所有其它窗体 UpdateControlsOnAllForms 其实就是一组简单的 For Nexts 循环遍历某个窗体的所有控件 找到需要更新的控体 并更新它们 为了在我的窗体中实现这一功能 我在窗体的 Load 事件中加入了这一行代码 AddFormToUpdate(Me) 另外一种可选的方法 我可以将它添加到构造函数 这一行代码将把当前窗体实例添加到集合进行更新 现在让我们考察单个事件过程 Private Sub txt_Leave(ByVal sender As Object _ ByVal e As System EventArgs) Handles txtAddress Leave _ txtCustomer Leave txtName Leave UpdateControlsOnAllForms(Me) End Sub 这段代码将我想要同步的所有三个控件 (txtAddress txtCustomer 和 txtName)的 Leave 事件捆绑到一个事件句柄上 这时我可以添加一行代码 来调用 UpdateControlsOnAllForms Me 被传递到该过程调用 从而导致其它窗体与该窗体同步 现在我有三个版本的代码 它们都可以同步窗体中控件 因此我可以进行选择 我可能已经使用了自定义事件 在 DataClass 中定义某个事件并让每个窗体都预订它 然后当这个事件触发时 这些窗体可以从每个事件句柄中获取新的数据并设置适当的控件 但是这样做所需的代码量一点也不会比第一种方法中将控件绑定到类来得少 我可以构建单个实现更新的过程 并将该过程放到某个模块中 我需要向该过程传递窗体实例来实现更新 我可以用类中的某个事件句柄触发这个过程 此过程看起来就像这样 Sub UpdateControls(ByVal ThisForm As frmBase) With ThisForm txtNextData Text = localNextData End With End Sub ThisForm 参数被定义为 frmBase 类型 以便它可以访问 IntelliSense 并获得窗体的自定义属性 简单地将它写成 Form 将无法显示 frmBase 中的属性及其派生窗体 另一选择是使用委托 当然 委托可以让我将委托调用重定向到每个窗体的方法上 如果我使用多播机制 那么我可以让每个窗体都处理该事件并更新相应的控件 用委托建立这样的功能听起来确实简单 但 对我来说它更麻烦且没有实践价值 此外 与第三个方法中的 For Next 循环嵌套相比 这个代码并不难理解 毕竟 一个应用程序花费最大的部分仍然是它的维护 lishixinzhi/Article/program/net/201311/11593

vb.net 窗体位置

form窗体有一个属性是startposition,把它设置为centerscreen就是居中。

代码为

me.startposition

=

formstartposition.centerscreen。

如果是非要计算分辨率的话:

my.computer.screen.bounds.width

是分辨率中的宽度

my.computer.screen.bounds.height

是分辨率中的高度

那么

me.top

=

(my.computer.screen.bounds.height

-

me.height)

/

2

me.left

=

(my.computer.screen.bounds.width

-

me.width)

/

2

就是让窗体居中啦~

用VB.NET设计各种形状的窗体界面二

结合上一节介绍的方法 通过Visual Basic Net的菜单设计器 按照图 和图 所示的菜单结构设计菜单   图 【MDI编程】项目的菜单结构之一   图 【MDI编程】项目的菜单结构之二 在利用菜单设计器设计完菜单后 分别在窗体中双击 新建 退出 层叠显示 横行平铺 纵向平铺 和 排列图标 菜单项 这样Visual Basic Net会在Form vb文件中分别产生这些菜单项的Click事件对应的处理代码 设定Form 的 IsMdiContainer 属性值为 True 这把Form 窗体定义为MDI窗体容器 这一步设置是后面编程的基础 当设置此属性值后 Form 的窗体也发生了改变 图 是设置此属性后的窗体模样   图 把Form 窗体设置为MDI窗体容器后的模样 选中图 中的 窗口 菜单项 并设置此菜单项的 MdiList 属性值为 True 其作用是当程序运行后 如果新建了一个MDI窗体 就会在 窗口 菜单项后 自动加入一个以新建MDI窗体名称命名的菜单项 如果新建了多个MDI窗体 则会在 窗口 菜单项后 会加入以这些MDI窗体名称命名的菜单项 当MDI窗体被关闭 那些以此MDI窗体命名的菜单项也会自动删除 具体可图 所示 把Visua Basic Net的当前窗口切换到Form vb的代码编辑窗口 并在定义Form 中组件的代码区加入下列代码 下列代码是定义一个变量 此变量用以统计程序中新建MDI窗体的数量 Private iFormCount As Integer = 用下列代码替换Form vb中的MenuItem 的Click事件对应的处理代码 MenuItem 即为图 中的 新建 菜单项 下列代码的作用是在新建一个MDI窗体 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickDim frmTemp As Form = New Form ( ) 新建一个窗体frmTemp MdiParent = Me 为当前创建的窗体设置MDI父窗体frmTemp Text = MDI窗体 + iFormCount ToString ( )iFormCount = iFormCount + frmTemp Show ( ) 把此MDI窗体显示出来End Sub 用下列代码替换Form vb中的MenuItem 的Click事件对应的处理代码 MenuItem 即为图 中的 退出 菜单项 下列代码的作用是退出应用程序 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickApplication Exit ( ) 退出应用程序End Sub 用下列代码替换Form vb中的MenuItem 的Click事件对应的处理代码 MenuItem 即为图 中的 层叠显示 菜单项 下列代码的作用是层叠排列窗体中的所有MDI窗体 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout Cascade ) 层叠排列窗体中的所有MDI窗体End Sub 用下列代码替换Form vb中的MenuItem 的Click事件对应的处理代码 MenuItem 即为图 中的 水平平铺 菜单项 下列代码的作用是水平平铺窗体中的所有MDI窗体 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout TileHorizontal ) 水平平铺窗体中的所有MDI窗体End Sub 用下列代码替换Form vb中的MenuItem 的Click事件对应的处理代码 MenuItem 即为图 中的 垂直平铺 菜单项 下列代码的作用是垂直平铺窗体中的所有MDI窗体 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout TileVertical ) 垂直平铺窗体中的所有MDI窗体End Sub 用下列代码替换Form vb中的MenuItem 的Click事件对应的处理代码 MenuItem 即为图 中的 排列图标 菜单项 下列代码的作用是窗体中的所有MDI窗体排列图标 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout ArrangeIcons ) 窗体中的所有MDI窗体排列图标End Sub至此【MDI编程】项目的全部工作就完成了 图 图 和图 是程序运行后的界面   图 【MDI编程】运行界面之一   图 【MDI编程】运行界面之二 图 【MDI编程】运行界面之三 此时我们注意到图 所示的 窗口 菜单中增加许多子菜单 而在程序设计时 并没有处理这些功能的代码 这是由于第十一步中设置 窗口 菜单项的 MdiList 属性值为 True 造成的 可见正确的设置组件的属性值有时的确能够代替烦杂的代码编写工作 五 总结 本文主要内容有二个 其一是介绍的在Visual Basic Net定制不规则窗体的实现方法 在Visual Basic Net中创建不规则窗体主要使用的是Region类和GraphicsPath类 GraphicsPath主要是绘制窗体的形状 Region主要是以GraphicsPath来构建窗体 结合本文的实现思路和具体方法 我想对于其他形状的窗体 在掌握GraphicsPath类提供的使用方法的前提下 加上对所要创建不规则窗体的规划设计 用Visual Basic Net实现起来应该不算很困难 本文的另外一个主要内容就是介绍在Visual Basic Net编写MDI应用程序的基本过程 技巧和注意事项 通过本文的介绍可见Visual Basic Net的MDI编程并没有什么复杂的地方 只需了解一些对MDI窗体处理的方法及其调用方式 当然更重要的是要了解并掌握某些组件的针对MDI的属性及其设置方式 lishixinzhi/Article/program/net/201311/11698

vb.net中怎么使窗体全屏显示?

Me.Height = My.Computer.Screen.Bounds.Height\x0d\x0aMe.Width = My.Computer.Screen.Bounds.Width\x0d\x0a这是设置窗体的长宽和屏幕的分辨率一样大小,相当于全屏。\x0d\x0a如果Me.WindowState=FormWindowState.Maximized的话,只是单纯的将窗体最大化,但恢复窗口大小后窗体的大小实际上还和原来一样大。

vb.net中怎么可以让窗体全屏显示?

Me.Height = My.Computer.Screen.Bounds.Height

Me.Width = My.Computer.Screen.Bounds.Width

这是设置窗体的长宽和屏幕的分辨率一样大小,相当于全屏。

如果Me.WindowState=FormWindowState.Maximized的话,只是单纯的将窗体最大化,但恢复窗口大小后窗体的大小实际上还和原来一样大。

VB.NET的特点

1.真正成为面向对象以及支持继承性的语言。

2.窗体设计器支持可视化继承,并且包含了许多新的特性,比如自动改变窗体大小、资源本地化支持、数据类工具内在支持XML数据。

3.直接建立在.NET的框架结构上,因此开发人员可以充分利用所有.NET平台特性,也可以与其他的.NET语言交互。

4.为Windows应用程序提供了XCOPY部署,开发者不再需要为DLL的版本问题担忧。


本文标题:vb.net界面中窗体 vb打开窗体的代码
URL网址:http://myzitong.com/article/hgdjdi.html