深入讨论VB.NET设置控件

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

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

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

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

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

程序说明:在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

2010-01-13 10:53:24

VB.NET控件

2009-10-23 13:14:38

2009-10-14 16:04:43

VB.NET Noti

2009-10-14 10:19:57

VB.NET Doma

2009-10-20 10:16:24

VB.NET COMB

2010-01-19 10:12:39

VB.NET Butt

2009-10-16 14:31:48

VB.NET Noti

2009-10-12 15:02:51

VB.NET动态控件

2009-10-23 13:10:14

VB.NET List

2009-10-14 11:27:20

VB.NET Grou

2009-10-14 17:21:47

VB.NET定制Win

2009-10-27 18:06:41

VB.NET开发控件

2009-10-16 14:07:18

VB.NET使用Mon

2009-10-14 11:15:06

VB.NET Grou

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
点赞
收藏

51CTO技术栈公众号