十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你可以使用用一个picturebox来完成。 ==界面设计== 如图,图片框名为Pic,横向团拆滚动条名为HS,纵向滚动条名为VS。 将你的窗口内容放入Pic中。此时,Pic的大小就是塌陪枣你内容的大校也就是说,Pic的大小乱备由你来设置。
创新互联专注为客户提供全方位的互联网综合服务,包含不限于网站建设、成都网站设计、宜丰网络推广、成都小程序开发、宜丰网络营销、宜丰企业策划、宜丰品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供宜丰建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
个人都不希望在别人的身上发现有与自己的相同之处 作为计算机软件来说也是一样 每一个用户都希望自己使简卖用的软件与别人不一样 于是诞生了换肤技术 用户可以根据自己的喜好来选择不同的界面 从而实现了个团咐旁性化的设置 但是换肤技术有一个不足之处 那就是所有的皮肤都是由开发者预先提供的 而且数量塌橡有限 这就导致了有些用户使用的皮肤会和另一些用户使用的皮肤相同 从而违背了设计者的初衷 虽然有些读者会说 开发商现在提供了下载服务 可以从它们的网站下载更多的皮肤供用户选择 可是从我的使用中发现这些皮肤依然是有限的 而且对于没有条件上网的用户来说这种服务是毫无价值
作为一个软件开发人员 当一种技术已经无法满足用户的需要的时候就该开动脑筋 想想是否可以从另一种角度来思考问题的答案 在这个前提下 通过本人的思考终于想出了一个新的方法 我将它称为交互界面 使用这种技术可以保证在全球范围内不会出现相同的界面结构 从而完全实现个性化 其实要实现这种界面在技术方式上并没有太高的要求 实现原理就是 让用户自己调整每一个控件的位置然后保存这些控件在界面上的坐标位置 在以后启动这个程序的界面时读取这些值 用这些值来设置控件在界面中的位置 下面的代码就是为实现这个功能而设计的(用vb net编写)
Private Sub Form _MouseUp(ByVal sender As Object ByVal e As System Windows Forms MouseEventArgs) Handles MyBase MouseUp Dim x y x = e X y = e Y 获得新的x y的坐标 If Button Enabled = False Then Button Top = y Button Left = x 坐标替换 End If If TextBox Enabled = False Then TextBox Top = y TextBox Left = x End If End Sub Private Sub MenuItem _Click(ByVal sender As System Object ByVal e As System EventArgs) Handles MenuItem Click Button Enabled = False 禁止控件响应事件 If TextBox Enabled = False Then TextBox Enabled = True End If End Sub Private Sub MenuItem _Click(ByVal sender As System Object ByVal e As System EventArgs) Handles MenuItem Click TextBox Enabled = False If Button Enabled = False Then Button Enabled = True End If End Sub Private Sub MenuItem _Click(ByVal sender As System Object ByVal e As System EventArgs) Handles MenuItem Click TextBox Enabled = True Button Enabled = True 将新的坐标保存到文本文件中 If IO File Exists( c:\k txt ) = True Then IO File Delete( c:\txt ) Dim sw As IO StreamWriter = IO File CreateText( c:\k txt ) Dim cstringt cstringl As String Dim tstringt tstringl As String cstringt = Button Top cstringl = Button Left tstringt = TextBox Top tstringl = TextBox Left sw WriteLine(cstringt) 写入新坐标到文本文件中 sw WriteLine(cstringl) sw WriteLine(tstringt) sw WriteLine(tstringl) sw Close() Else Dim sw As IO StreamWriter = IO File CreateText( c:\k txt ) Dim cstringt cstringl As String Dim tstringt tstringl As String cstringt = Button Top cstringl = Button Left tstringt = TextBox Top tstringl = TextBox Left sw WriteLine(cstringt) sw WriteLine(cstringl) sw WriteLine(tstringt) sw WriteLine(tstringl) sw Close() End If MsgBox( 当前界面已经保存 ) End Sub Private Sub Form _Load(ByVal sender As Object ByVal e As System EventArgs) Handles MyBase Load
If IO File Exists( c:\k txt ) = True Then Dim sr As IO StreamReader = IO File OpenText( c:\k txt ) Dim input input input input As String input = sr ReadLine input = sr ReadLine input = sr ReadLine input = sr ReadLine 读取文件中的坐标 Button Top = input Button Left = input TextBox Top = input TextBox Left = input 用文件中的值来初始化控件在界面中的位置 sr Close() End If End Sub
程序说明 在MenuItem _Click 是在调整控件之后将控件的新位置保存到c;\k txt文件中 form_load中的if作用是 如果是没有设置控件的新位置在初始化是将不会发现c;\k txt文件 从而使用默认的参数来指定控件的位置 如果是有c;\k txt文件存在就读取其中的参数来初始化控件的位置 在Form _MouseUp中通过点击窗口中的位置来获得新的坐标 使控件移动到此坐标处 对于Enabled属性的使用是为了使控件在移动时不响应如click等的事件
本文移动的控件是textbox和button两个控件 你可以按照本文提出的方法加入更多的控件 从而实现千人千面
lishixinzhi/Article/program/net/201311/15298
结合上一节介绍的方法 通过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