5.轻松编写托盘程序(转自51CTO)
托盘程序作为一类特殊的窗体,其快捷图标显示在系统托盘中,窗体本身则隐藏不可见。在.NET之前版本的VB中编写托盘程序是十分困难的,但是VB.NET提供的新的NotifyIcon组件却使VB初学者也能轻松编写一个这样的程序:
新建“Windows应用程序”,设置主窗体Opacity属性为0,FormBorderStyle属性为None,ShowInTaskbar属性为False,这样窗体将在启动后隐藏。在窗体上放置一个NotifyIcon组件NotifyIcon1,一个ContextMenu(弹出菜单)组件ContextMenu1,并根据需要为ContextMenu1添加菜单项。
设置NotifyIcon1的ICON属性,这个图标就是应用程序出现在系统托盘中的快捷图标;设置NotifyIcon1的Text属性为“VB.NET托盘程序”,这就是鼠标移动到托盘图标时弹出的文字说明;设置NotifyIcon1的ContextMenu属性为ContextMenu1,也就是右键单击快捷图标时的弹出菜单为ContextMenu1。OK,按F5运行!
几乎不用编写代码,一个托盘程序就这样轻松实现了。
6.VB.NET实现窗体图标最小化到状态栏
本文所使用的编程环境是Microsoft Visual Studio 2005,首先打开Visual Studio。在文件(File)菜单上,单击新建项目(New Project)。在新建项目(New Project)对话框的模板(Templates)窗格中,单击Windows应用程序(WindowsApplication)。单击确定(ok)。
想要将窗体图标最小化时自动隐藏到任务栏,我们可以使用一个控件,这个控件的名字叫做NotifyIcon控件,打开左侧的工具箱找到NotifyIcon控件直接将它拖到窗体上。把NotifyIcon的Icon属性设一下,当然ICON属性你可以设置一个好看的图标。
![](http://developer.51cto.com/files/uploadimg/20070801/1043060.jpg) |
图1 |
接下来单击Form1窗体,进入属性设置。把Form的WindowState设成Minimized;ShowInTaskbar属性设成False。
![](http://developer.51cto.com/files/uploadimg/20070801/1043061.jpg) |
图2 |
接下来我们就要输入代码了。在Form的Resize代码事件中,
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize If Me.WindowState = FormWindowState.Minimized Then Me.Hide() End If End Sub
|
代码的意思是让窗体最小化的时候就自动隐藏到状态栏。
这样运行的时候窗体就会自动隐藏,出现在状态栏了。
想双击图标的时候显示窗体的话可以设置NotifyIcon控件的DoubleClick代码。
代码如下:
Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick Me.ShowInTaskbar = True Me.Show() Me.WindowState = FormWindowState.Normal End Sub
|
如果我们想创建右键菜单的话,我们可以在窗体上添加一个ContextMenustrip控件,用NotifyIcon的ContextMenu属性进行关联。在工具箱中选择菜单和工具栏,直接将ContextMenu控件拖到窗体上进入属性设置,输入相应菜单关键字(自己想输入的文字如下图的软件版本等)。
![](http://developer.51cto.com/files/uploadimg/20070801/1043062.jpg) |
图3 |
然后单击窗体的NotifyIcon1控件,设置属性,在contextmenustrip处选择刚才编辑过的右键菜单ContextMenustrip1进行关联。
![](http://developer.51cto.com/files/uploadimg/20070801/1043063.jpg) |
图4 |
然后按F5运行程序,点击窗体最小化按钮,窗体的图标自动隐藏到状态栏了。点击右键你可以看到精美的右键菜单。
7.下列常数由 Visual Basic for Applications 中的类型库定义,可用来在代码中的任何地方代替实际值:
常数 等于 描述
vbCrLf Chr(13) + Chr(10) 回车符与换行符结合
vbCr Chr(13) 回车符
vbLf Chr(10) 换行符
vbNewLine Chr(13) + Chr(10) 平台指定的新行字符;适用于当前平台
vbNullChar Chr(0) 值为 0 的字符
vbNullString 值为 0 的字符串 用来调用外部过程;与长度为零的字符串 ("") 不同
vbObjectError -2147221504 用户定义的错误号应当大于该值,例如:
Err.Raise Number = vbObjectError + 1000
vbTab Chr(9) Tab 字。
vbBack Chr(8) 退格字符
vbFormFeed Chr(12) 在 Microsoft Windows 中没有作用
vbVerticalTab Chr(11) 在 Microsoft Windows 中没有作用
8.字符串连接实例
Dim str As String
str = "您的姓名:" + TextBox1.Text + vbCrLf + "性别:" + TextBox2.Text + vbCrLf
str += "生日:" + DateTimePicker1.Value.ToString
MessageBox.Show(str, "个人信息", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
9.软件启动窗口示例及代码
Public Class Form2
Inherits System.Windows.Forms.Form
Dim t As Integer
Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
t = 10
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If t = 0 Then
Timer1.Enabled = False
Me.Close()
Else
t -= 1
End If
End Sub
End Class
10.
(1)建立access数据库连接及定义相关变量
Inherits System.Windows.Forms.Form '定义继承
Dim MyConnection As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\library.mdb") '建立连接并指定数据库名称(数据库需放置在项目的bin\debug文件夹下)
Dim MyCommand As OleDbCommand '用于执行SQL命令
Dim MyReader As OleDbDataReader '用于读取数据
(2)打开连接及查找字段
MyConnection.Open()
MyCommand = New OleDbCommand("SELECT * FROM BookType WHERE Type ='" & TxtTypeNo.Text & "'", MyConnection)
MyReader = MyCommand.ExecuteReader()
While MyReader.Read
temp = MyReader("Type")
End While
MyConnection.Close()
MyReader.Close()
MyCommand.dispose()
(3)打开连接及插入字段
MyConnection.Open()
MyCommand = New OleDbCommand("INSERT INTO BookCode VALUES('" & TextBox1.Text & "','" & TextBox2.Text & "')", MyConnection)
MyCommand.ExecuteNonQuery()
MyConnection.Close()
MyCommand.dispose()
10.滚动条使用
Dim a As Integer
Randomize()
a = CInt(TextBox7.Text)
Dim str(a) As Integer
Dim mystring As String = ""
ToolStripProgressBar1.Visible = True
ToolStripProgressBar1.Minimum = 1
ToolStripProgressBar1.Maximum = a
ToolStripProgressBar1.Step = 1
If a >= 1000 Then
MsgBox("数目超过范围,请输入一个1000以内的整数", MsgBoxStyle.OkOnly)
TextBox7.Clear()
TextBox7.Focus()
Exit Sub
End If
For a = 1 To a
str(a) = CInt((1000 - 1 + 1) * Rnd() + 1)
mystring = mystring & str(a) & Space(2)
ToolStripProgressBar1.PerformStep()
Next
RichTextBox3.Text = mystring