深入讨论VB.NET设置控件

开发 后端
这里介绍VB.NET设置控件,用户可以根据自己的喜好来选择不同的界面,从而实现了个性化的设置。但是换肤技术有一个不足之处,那就是所有的皮肤都是由开发者预先提供的,而且数量有限。

VB.NET经过长时间的发展,很多用户都很了解VB.NET设置控件了,这里我发表一下个人理解,和大家讨论讨论。个人都不希望在别人的身上发现有与自己的相同之处。作为计算机软件来说也是一样,每一个用户都希望自己使用的软件与别人不一样,于是诞生了换肤技术。用户可以根据自己的喜好来选择不同的界面,从而实现了个性化的设置。但是换肤技术有一个不足之处,那就是所有的皮肤都是由开发者预先提供的,而且数量有限。这就导致了有些用户使用的皮肤会和另一些用户使用的皮肤相同,从而违背了设计者的初衷。虽然有些读者会说,开发商现在提供了下载服务,可以从它们的网站下载更多的皮肤供用户选择,可是从我的使用中发现这些皮肤依然是有限的,而且对于没有条件上网的用户来说这种服务是毫无价值。

作为一个软件开发人员,当一种技术已经无法满足用户的需要的时候就该开动脑筋,想想是否可以从另一种角度来思考问题的答案。在这个前提下,通过本人的思考终于想出了一个新的方法,我将它称为--交互界面。使用这种技术可以保证在全球范围内不会出现相同的界面结构,从而完全实现个性化。

其实要实现这种界面在技术方式上并没有太高的要求。实现原理就是:让用户自己调整每一个控件的位置然后保存这些控件在界面上的坐标位置。在以后启动这个程序的界面时读取这些值,用这些值来VB.NET设置控件在界面中的位置。下面的代码就是为实现这个功能而设计的(用VB.NET编写)

  1. Private Sub Form1_MouseUp(ByVal sender As Object,  
  2. ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp  
  3. Dim x, y  
  4. x = e.X  
  5. y = e.Y'获得新的x,y的坐标  
  6. If Button1.Enabled = False Then  
  7. Button1.Top = y 
  8. Button1.Left = x'坐标替换  
  9. End If  
  10. If TextBox1.Enabled = False Then  
  11. TextBox1.Top = y 
  12. TextBox1.Left = x  
  13. End If  
  14. End Sub  
  15. Private Sub MenuItem2_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles MenuItem2.Click  
  16. Button1.Enabled = False'禁止控件响应事件  
  17. If TextBox1.Enabled = False Then  
  18. TextBox1.Enabled = True 
  19. End If  
  20. End Sub  
  21. Private Sub MenuItem3_Click(ByVal sender As System.Object,  
  22. ByVal e As System.EventArgs) Handles MenuItem3.Click  
  23. TextBox1.Enabled = False 
  24. If Button1.Enabled = False Then  
  25. Button1.Enabled = True 
  26. End If  
  27. End Sub  
  28. Private Sub MenuItem4_Click(ByVal sender As System.Object,
    ByVal e As System.EventArgs) Handles MenuItem4.Click  
  29. TextBox1.Enabled = True 
  30. Button1.Enabled = True 
  31. '将新的坐标保存到文本文件中  
  32. If IO.File.Exists("c:\k.txt") = True Then  
  33. IO.File.Delete("c:\txt")  
  34. Dim sw As IOIO.StreamWriter = IO.File.CreateText("c:\k.txt")  
  35. Dim cstringt, cstringl As String  
  36. Dim tstringt, tstringl As String  
  37. cstringt = Button1.Top  
  38. cstringl = Button1.Left  
  39. tstringt = TextBox1.Top  
  40. tstringl = TextBox1.Left  
  41. sw.WriteLine(cstringt)'写入新坐标到文本文件中  
  42. sw.WriteLine(cstringl)  
  43. sw.WriteLine(tstringt)  
  44. sw.WriteLine(tstringl)  
  45. sw.Close()  
  46. Else  
  47. Dim sw As IOIO.StreamWriter = IO.File.CreateText("c:\k.txt")  
  48. Dim cstringt, cstringl As String  
  49. Dim tstringt, tstringl As String  
  50. cstringt = Button1.Top  
  51. cstringl = Button1.Left  
  52. tstringt = TextBox1.Top  
  53. tstringl = TextBox1.Left  
  54. sw.WriteLine(cstringt)  
  55. sw.WriteLine(cstringl)  
  56. sw.WriteLine(tstringt)  
  57. sw.WriteLine(tstringl)  
  58. sw.Close()  
  59. End If  
  60. MsgBox("当前界面已经保存")  
  61. End Sub  
  62. Private Sub Form1_Load(ByVal sender As Object,  
  63. ByVal e As System.EventArgs) Handles MyBase.Load  
  64.  
  65. If IO.File.Exists("c:\k.txt") = True Then  
  66. Dim sr As IOIO.StreamReader = IO.File.OpenText("c:\k.txt")  
  67. Dim input1, input2, input3, input4 As String  
  68. input1 = sr.ReadLine  
  69. input2 = sr.ReadLine  
  70. input3 = sr.ReadLine  
  71. input4 = sr.ReadLine'读取文件中的坐标  
  72. Button1.Top = input1 
  73. Button1.Left = input2 
  74. TextBox1.Top = input3 
  75. TextBox1.Left = input4'用文件中的值来初始化控件在界面中的位置  
  76. sr.Close()  
  77. End If  
  78. End Sub 

程序说明:在MenuItem4_Click 是在调整控件之后将控件的新位置保存到c;\k.txt文件中。form_load中的if作用是,如果是没有VB.NET设置控件的新位置在初始化是将不会发现c;\k.txt文件,从而使用默认的参数来指定控件的位置。如果是有c;\k.txt文件存在就读取其中的参数来初始化控件的位置。在Form1_MouseUp中通过点击窗口中的位置来获得新的坐标,使控件移动到此坐标处。对于Enabled属性的使用是为了使控件在移动时不响应如click等的事件。

本文移动的控件是textbox和button两个控件,你可以按照本文提出的方法加入更多的控件,从而实现千人千面。

其实本人写这篇文章的一个主要目的是为了说明一个程序员不但要掌握牢固的技术,同时还要有创新的思想。正如国外的分析家指出"微软的成功在很大的程度上是依靠它的创新思维",所以希望读了此文的读者在以后的开发过程中不要墨守成规!

【编辑推荐】

  1. 代码讲述VB.NET实现数据绑定
  2. VB.NET TextBox组件高手经验谈
  3. 瞬间掌握VB.NET Web Service
  4. 实例分析VB.NET Treeview结构
  5. 百宝箱之VB.NET设计制作窗体
责任编辑:佚名 来源: IT168
相关推荐

2010-01-12 15:21:48

VB.NET权限控制

2009-10-26 15:26:37

VB.NET属性

2009-10-20 10:29:30

VB.NET使用Sor

2009-10-23 13:14:38

2010-01-13 10:53:24

VB.NET控件

2009-10-14 10:19:57

VB.NET Doma

2009-10-14 16:04:43

VB.NET Noti

2009-10-20 10:16:24

VB.NET COMB

2009-10-14 11:27:20

VB.NET Grou

2010-01-19 10:12:39

VB.NET Butt

2009-10-12 15:02:51

VB.NET动态控件

2009-10-16 14:31:48

VB.NET Noti

2009-10-23 13:10:14

VB.NET List

2009-10-14 17:21:47

VB.NET定制Win

2009-10-27 18:06:41

VB.NET开发控件

2009-10-16 13:19:04

VB.NET Data

2009-10-10 16:44:52

VB.NET开发控件

2009-10-13 15:09:19

VB.NET使用Tre

2009-10-14 11:15:06

VB.NET Grou

2009-10-16 14:07:18

VB.NET使用Mon
点赞
收藏

51CTO技术栈公众号