个人都不希望在别人的身上发现有与自己的相同之处
作为计算机软件来说也是一样
每一个用户都希望自己使用的软件与别人不一样
于是诞生了换肤技术
用户可以根据自己的喜好来选择不同的界面
从而实现了个性化的设置
但是换肤技术有一个不足之处
那就是所有的皮肤都是由开发者预先提供的
而且数量有限
这就导致了有些用户使用的皮肤会和另一些用户使用的皮肤相同
从而违背了设计者的初衷
虽然有些读者会说
开发商现在提供了下载服务
可以从它们的网站下载更多的皮肤供用户选择
可是从我的使用中发现这些皮肤依然是有限的
而且对于没有条件上网的用户来说这种服务是毫无价值
作为一个软件开发人员当一种技术已经无法满足用户的需要的时候就该开动脑筋想想是否可以从另一种角度来思考问题的答案在这个前提下通过本人的思考终于想出了一个新的方法我将它称为交互界面使用这种技术可以保证在全球范围内不会出现相同的界面结构从而完全实现个性化
其实要实现这种界面在技术方式上并没有太高的要求实现原理就是让用户自己调整每一个控件的位置然后保存这些控件在界面上的坐标位置在以后启动这个程序的界面时读取这些值用这些值来设置控件在界面中的位置下面的代码就是为实现这个功能而设计的(用vbnet编写)
Private Sub Form_MouseUp(ByVal sender As Object
ByVal e As SystemWindowsFormsMouseEventArgs) Handles MyBaseMouseUp
Dim x y
x = eX
y = eY获得新的xy的坐标
If ButtonEnabled = False Then
ButtonTop = y
ButtonLeft = x坐标替换
End If
If TextBoxEnabled = False Then
TextBoxTop = y
TextBoxLeft = x
End If
End Sub
Private Sub MenuItem_Click(ByVal sender As SystemObject
ByVal e As SystemEventArgs) Handles MenuItemClick
ButtonEnabled = False禁止控件响应事件
If TextBoxEnabled = False Then
TextBoxEnabled = True
End If
End Sub
Private Sub MenuItem_Click(ByVal sender As SystemObject
ByVal e As SystemEventArgs) Handles MenuItemClick
TextBoxEnabled = False
If ButtonEnabled = False Then
ButtonEnabled = True
End If
End Sub
Private Sub MenuItem_Click(ByVal sender As SystemObject
ByVal e As SystemEventArgs) Handles MenuItemClick
TextBoxEnabled = True
ButtonEnabled = True
将新的坐标保存到文本文件中
If IOFileExists(c:\ktxt) = True Then
IOFileDelete(c:\txt)
Dim sw As IOStreamWriter = IOFileCreateText(c:\ktxt)
Dim cstringt cstringl As String
Dim tstringt tstringl As String
cstringt = ButtonTop
cstringl = ButtonLeft
tstringt = TextBoxTop
tstringl = TextBoxLeft
swWriteLine(cstringt)写入新坐标到文本文件中
swWriteLine(cstringl)
swWriteLine(tstringt)
swWriteLine(tstringl)
swClose()
Else
Dim sw As IOStreamWriter = IOFileCreateText(c:\ktxt)
Dim cstringt cstringl As String
Dim tstringt tstringl As String
cstringt = ButtonTop
cstringl = ButtonLeft
tstringt = TextBoxTop
tstringl = TextBoxLeft
swWriteLine(cstringt)
swWriteLine(cstringl)
swWriteLine(tstringt)
swWriteLine(tstringl)
swClose()
End If
MsgBox(当前界面已经保存)
End Sub
Private Sub Form_Load(ByVal sender As Object
ByVal e As SystemEventArgs) Handles MyBaseLoad
If IOFileExists(c:\ktxt) = True Then
Dim sr As IOStreamReader = IOFileOpenText(c:\ktxt)
Dim input input input input As String
input = srReadLine
input = srReadLine
input = srReadLine
input = srReadLine读取文件中的坐标
ButtonTop = input
ButtonLeft = input
TextBoxTop = input
TextBoxLeft = input用文件中的值来初始化控件在界面中的位置
srClose()
End If
End Sub
程序说明在MenuItem_Click 是在调整控件之后将控件的新位置保存到c;\ktxt文件中form_load中的if作用是如果是没有设置控件的新位置在初始化是将不会发现c;\ktxt文件从而使用默认的参数来指定控件的位置如果是有c;\ktxt文件存在就读取其中的参数来初始化控件的位置在Form_MouseUp中通过点击窗口中的位置来获得新的坐标使控件移动到此坐标处对于Enabled属性的使用是为了使控件在移动时不响应如click等的事件
本文移动的控件是textbox和button两个控件你可以按照本文提出的方法加入更多的控件从而实现千人千面
其实本人写这篇文章的一个主要目的是为了说明一个程序员不但要掌握牢固的技术同时还要有创新的思想正如国外的分析家指出微软的成功在很大的程度上是依靠它的创新思维所以希望读了此文的读者在以后的开发过程中不要墨守成规!