找回密码
 立即注册
搜索
热搜: 活动 交友 discuz

VB.net2008精彩实例和实用教程

[复制链接]
发表于 2017-3-25 17:34:15 | 显示全部楼层 |阅读模式
  1. 主要开发环境是Visual Studio 2008,Visual Studio系列产品一直以来都提供了强大的控件功能,然而我们利用这些控件可以编写出功能强大的应用程序。本文主要利用微软的最新.net开发工具为大家展示窗体特效的应用方法,为大家介绍创建炫酷的透明化窗体以及浮动型窗体的一些技巧。很适合.net开发工具的初学者,具有一定的实用价值。
  2.   打开 Visual Studio 2008在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序(Windows Application)。单击确定 (OK)
  3.   窗体应用技巧一,创建浮动窗体。
  4.   创建新工程后,选择Form1窗体,添加Timer1和Timer2控件。为窗体选择一个好看的背景,当然你也可以使用系统默认的背景。
  5.   进入代码编辑器,输入代码:
  6.   Public Class Form1
  7.   Inherits System.Windows.Forms.Form
  8.   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  9.   Dim pos As Point = New Point(100, 50) '设置窗体初始位置
  10.   Me.DesktopLocation = pos
  11.   Timer1.Interval = 10 '设置Timer的值
  12.   Timer1.Enabled = True
  13.   Timer2.Interval = 10
  14.   Timer2.Enabled = False
  15.   End Sub
  16.   进入Timer1_Tick事件
  17.   
  18.   Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  19.   Dim pos As Point = New Point(Me.DesktopLocation.X + 2, Me.DesktopLocation.Y + 1) '窗体左上方横坐标的timer1加
  20.   If pos.X < 600 Or pos.Y < 400 Then
  21.   Me.DesktopLocation = pos
  22.   Else
  23.   Timer1.Enabled = False
  24.   Timer2.Enabled = True
  25.   End If
  26.   End Sub
  27.   进入Timer2_Tick事件
  28.   Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  29.   Dim pos As Point = New Point(Me.DesktopLocation.X - 2, Me.DesktopLocation.Y - 1) '窗体的左上方横坐标随着timer2减一
  30.   
  31.   If pos.X > 100 Or pos.Y > 50 Then
  32.   Me.DesktopLocation = pos
  33.   Else
  34.   Timer1.Enabled = True
  35.   Timer2.Enabled = False
  36.   End If
  37.   End Sub
  38.   创建完成后我们来运行程序测试一下,测试成功,程序在屏幕中不断地来回走动了。
  39.   窗体应用技巧二,创建透明的窗体。
  40.   创建新工程后,选择Form1窗体,添加Label1、TrackBar1、Timer1控件。为了突出效果为窗体选择一个好看的背景。
  41.   相关的属性设置如下:
  42.   TrackBar1 Value属性:
  43.   TickFrequency: 属性:
  44.   Maximum属性: 100
  45.   10
  46.   100
  47.   Label1 Text属性: 选择窗体的透明度:
  48.   Timer1 Interval属性: 100
  49.   进入代码编辑器,输入代码:
  50.   首先进行声明:
  51.   
  52.   Public Class Form1
  53.   Inherits System.Windows.Forms.Form
  54.   Dim tps As Integer
  55.   Dim bol As Boolean
  56.   进入TrackBar1_Scroll事件
  57.   
  58.   Private Sub TrackBar1_Scroll(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
  59.   Me.Opacity = TrackBar1.Value / 100
  60.   Label1.Text = "窗体透明度:" & CStr(Me.Opacity * 100) & "%"
  61.   End Sub
  62.   进入Timer1_Tick事件
  63.   Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
  64.   If bol = False Then
  65.   tps = tps + 1
  66.   Me.Opacity = tps / 100
  67.   If Me.Opacity >= 1 Then
  68.   Timer1.Enabled = False
  69.   bol = True
  70.   End If
  71.   Else
  72.   tps = tps - 1
  73.   Me.Opacity = tps / 100
  74.   If Me.Opacity <= 0 Then
  75.   Timer1.Enabled = False
  76.   bol = False
  77.   End If
  78.   End If
  79.   End Sub
  80.   
  81.   进入Form1_Load事件
  82.   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  83.   Timer1.Enabled = True
  84.   End Sub
  85.   
  86.   进入Form1_Closing事件
  87.   
  88.   Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
  89.   Timer1.Enabled = True
  90.   If MsgBox("你确实要关闭窗体吗?", MsgBoxStyle.OkCancel) = MsgBoxResult.Ok Then
  91.   e.Cancel = False
  92.   Else
  93.   Timer1.Enabled = False
  94.   Me.Opacity = 1
  95.   tps = 100
  96.   bol = True
  97.   e.Cancel = True
  98.   End If
  99.   End Sub
  100.   创建完成后我们来运行程序测试一下,测试成功,程序窗体是不是变得透明了,通过调节滚动条我们甚至可以使得窗体消失达到完全隐形的目的。这是不是很神奇呢?
复制代码


qq.jpg
 楼主| 发表于 2017-3-25 18:24:47 | 显示全部楼层

微软于最近发布了新一代的应用开发工具Visual Studio 2008,其中不乏加入了许多创新型元素,对于VS 2008来说,其功能远比VS 2005强大,在网络应用编程方面有了显著的改变,VS 2008已经集成了对javascript的调试功能,同时编辑Web窗体时的模式也由原来的Design和Source变成了三个,增加了Split即设计和源代码模式。而大家一直所关注的VS 2008的产品之一(同时也是微软最看重的一个语言——VB.net2008)是否有较大变化呢?本文以实例操作来体验VB.net2008的开发环境。

VS2008简体中文正式版当中所附带的数据库依然是SQL Server 2005 Express并没有将SQL Server 2008 Express加入进来。启动VS2008界面后你可以看到其中与VS2005的不同之处。


[附件已丢失]
图1

本文所使用的编程环境是Microsoft Visual Studio 2008简体中文正式版,首先打开Visual Studio2008。在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序(Windows Application)。单击确定 (OK)。


[附件已丢失]
图2

再次选择<项目>菜单-添加新项-在弹出窗口对话框中选择<基于服务的数据库>图3与以前VS2005版本又有了不同之处吧。命名为MyDatabase.mdf 。


[附件已丢失]
图3

我们先需要创建自己的数据库,在解决方案资源管理器中选择MyDatabase.mdf随后会在窗口左边出现服务器资源管理器-选中表-右键添加新表如图4:


[附件已丢失]
图4

1101040.jpg
1101041.jpg
1101042.jpg
1101043.jpg
 楼主| 发表于 2017-3-25 18:25:27 | 显示全部楼层
VB.NET界面设计的应用在实际开发中是很常见的一个操作。初学者们在学习这一方面知识的时候,可以对此进行一个详细的解读, 从而掌握相关应用技巧,提高我们的实际编程能力。

  VB.NET界面设计一、窗体设计

  窗体设计的好坏往往影响到软件的整体形象,因此必须首先处理好窗体的设计问题。

  1、窗体的边框

  窗体边框的默认风格为“Sizeable”(可变的),但并不是所有窗体都可以使用可变边框。因为用户常常有意无意地改变窗体的大小(比如双击窗口的标题栏),如果窗体中包含大量的控件,极有可能遮住部份控件或由于窗体过大而使控件的相对位置发生变化,使用户产生疑惑。

  解决该问题的一种方法是在form_Resize事件过程中动态改变控件的位置和大小,使之在窗体中保持相对位置,但缺点是当窗体过小时,很难保证控件的可视效果。当然可以用程序控制窗体的最小尺寸,但更简单的方法是将窗体边框设置成“Fixed Single”, 如果不想提供最大化或最小化功能,也可以将其设为“Fixed Dialog”。

  2、窗体的初始位置

  窗体的初始位置会直接影响用户的使用,特别在多窗口的环境中,如果新的窗口完全覆盖了先前的窗口,用户一定会以为原先的窗口丢失了。使用层叠方法排列窗口并在任务条上显示每个窗口的进程标题是个不错的选择。 模式窗体激活时会阻止用户操作其它窗体,因此必须在不需要同时使用任何其它窗体的情况下才使用模式窗体,并确保窗体是可移动的。

  3、使用多文档窗口界面

  在多窗口界面中,所有窗体都以桌面为依托,好象有多个应用程序在运行一样,窗口管理比较麻烦,采用MDI多文档界面会将窗口管理的复杂程度降到最低。

  在多文档界面中,必须有且只有一个主文档窗体(MDI主窗体),它的窗体区域不能放置除菜单类组件以外的任何控件,但可以拥有多个子窗体(MDI子窗体),也就是说MDI子窗体不能独立存在,并且不能为模式窗体,它们只能在MDI主窗体的窗体区域内活动;子窗体最大化时其标题栏和菜单栏能和主窗体合并;最小化时子窗体并不会缩至任务条上,而是缩小至主窗体的左下角;关闭主窗体时,所有子窗体都能自动关闭。充分使用好MDI界面会使用户觉得窗口控制更加简单。

  4、控件的安排

  控件是窗体最主要的组成部份,其排列形式会对用户操作的直观性和易用性产生重要影响。控件的放置一般 裱?韵略?颍?按功能组织控件的位置。

  将控件按功能分类放置于窗体的不同的区域,会让用户更容易找到所需的功能。如果将“字体”和“取消”按钮放在一起,而将“颜色”和“确定”按钮放在一起,用户一定会摸不着头脑。

  在保证可视性良好的前提下,控件的尺寸应尽可能地“小”,这样可以尽量缩小窗体的尺寸。

  不在过小的窗体中放置过多的控件。

  在过小的窗体中放置过多的控件,会造成窗体元素的过分拥挤,使控件的标题和文本难以辨认。

  如果可能,应在按钮控件中使用图标,这样既可以使画面更生动,又使用户更容易理解控件的作用。

  使用控件的“ ToolsTip ”属性。

  “ToolsTip”可以为控件加上浮动的提示条。当用户的鼠标指向该控件时,提示条会自动显示,让用户立即从文字中了解控件的功能,数秒钟后它还会自动消失,不会给用户带来视觉障碍。

  VB.NET界面设计二、菜单设计

  菜单是界面设计中的重要组成部份,“简单、直观、一致、有效”是菜单设计的原则。

  下面的建议可能对创建满足用户期望的菜单有所帮助。

  按照逻辑功能将菜单项分组,并且在下拉菜单中用分隔线将功能更相关的项目分组排列。

  在同一菜单中避免使用多个相同功能的菜单项,否则会使用户产生疑惑。 避免使用没有下拉项的菜单项,因为孤立的菜单项和按钮没什么区别。点击这类菜单项并直接产生某个动作,通常会给用户产生过于 “突然”的感觉。

  为了使用户使用更方便,可以在相关的窗体或控件区域内设置弹出式菜单,特别推荐用鼠标右键弹出菜单。同时这些弹出式菜单可以在主菜单中保留副本。 如果单击某个下拉菜单项会弹出对话框的话,最好在菜单标题的末尾添加“…”(省略号),这是Windows的约定。这样会使菜单更接近标准的Windows菜单,给熟悉Windows操作的用户带来方便。

  VB.NET界面设计三、照顾用户的感觉

  用户的感觉是检验软件成功与否的试金石,这种感觉包括对软件的外观、易用性和速度等许多方面。

  通常用户单击图标、控件或者菜单项时总希望看见一些事情发生。如果在单击后屏幕上没有发生变化,用户可能产生困惑,或者以为没有按对鼠标,或者干脆怀疑程序是否已经“死”了,但实际上程序可能正在处理一些需要较长时间才能完成的事情。结果不是为了确认鼠标是否按下而多次运行了同一个程序(这会使情况更糟),就是程序被强行关闭。这是我们不愿看到的。

  解决的方法很简单,只要在开始处理前显示一个等待画面,如显示一条诸如“正在处理数据,请您稍候…”之类的信息,如果能配合显示动画图标和进度条,则效果更佳,它给用户的感觉就会变成:程序正在“拼命”地工作,而且很快就会完成了。

  如果整个程序的启动时间过长,也会造成同样的情况。可以用类似的方法来解决:显示一个“闪现”画面(Flash Screen),在显示过程中完成启动处理,然后关闭“闪现”画面,进入主程序(类似Word的启动画面)。需要说明的是,要显示“闪现”画面,最好使用Sub_Main()作为程序的入口。

  一些带有许多窗体的程序在运行时不断地装载或卸载窗体,用户感觉很“慢”,一个行之有效的方法就是在程序启动阶段将常用的窗体用Load语句预先装入内存(不显示),需要的时候只要用窗体的Show方法就能立即显示出来。虽然这有可能增加程序启动的时间和对内存的要求,但程序运行时的性能表现要快得多。

  另外,用户对于不受他们控制的程序操作大多比较反感,因此让用户有机会取消操作将会更体贴用户。

  一般在执行某个关键操作前,可以显示一个对话框,它至少包括两个按钮:“确定”和“取消”,这样可以给用户“反悔”的机会;在执行一些需要长时间才能完成的动作(比如数据复制)的过程中,在不影响数据安全性的前提下,可以提供一个“取消”按钮,让不耐烦的用户有机会终止操作。在设计这种功能时要熟练使用DoEvents语句。

  以上只是本人在使用VB.NET界面设计过程中的一些经验和感受,希望能为广大的VB程序员起到“抛砖引玉”的作用。

 楼主| 发表于 2017-3-25 18:26:08 | 显示全部楼层
 Visual Studio2008在稳定性方面增强不少,笔者在使用时很少出现BUG的情况,而且Visual Studio2008在网络应用编程与图像处理方面也比原来版本增强了不少,开发效率有了提高。本篇文章将介绍如何利用Visual Studio2008所提供的控件编写一个简单的屏幕抓捕程序,本篇文章具有一定的实用性,让大家对ContextMenuStrip1控件和NotifyIcon1控件有所了解,且在应用程序开发中需要经常用到这些控件,希望对大家有所帮助。  
  打开 Visual Studio 2008在文件 (File) 菜单上,单击新建项目 (New Project)。 在新建项目 (New Project) 对话框的模板 (Templates) 窗格中,单击 Windows 应用程序(Windows Application)。单击确定 (OK) 如图1。


[附件已丢失]


  选择Form1窗体,在Form1窗体中添加ContextMenuStrip1控件,选中ContextMenuStrip1控件输入<抓捕当前屏幕>与<退出程序>。我们需要在程序最小化时,作为调用程序右键菜单的功能选项。如图2


[附件已丢失]


  随后我们需要在Form1中添加NotifyIcon1控件,NotifyIcon1控件作为程序图标显示到窗体的任务栏中。我们选择NotifyIcon1控件的Icon属性选择一个喜欢的图标。接下来最重要的一步就是进行图标和快捷菜单的绑定了。我们需要选择NotifyIcon1控件的ContextMenuStrip属性,选中菜单下拉框中的ContextMenuStrip1这样就进行绑定了。如图3


[附件已丢失]

  好了现在界面工作我们已经完成了接下来我们需要进行输入代码的工作了
  首先进行声明:  
  Imports System.Runtime.InteropServices
  Imports System.Drawing.Imaging  
  Public Class Form1  
   _
   Private Shared Function BitBlt(ByVal hdcDest As IntPtr, ByVal nXDest As Integer, ByVal nYDest As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal hdcSrc As IntPtr, _
   ByVal nXSrc As Integer, ByVal nYSrc As Integer, ByVal dwRop As Integer) As Boolean
   End Function  
   _
   Private Shared Function CreateDC(ByVal lpszDriver As String, ByVal lpszDevice As String, ByVal lpszOutput As String, ByVal lpInitData As IntPtr) As IntPtr
   End Function
   Private picture As Bitmap = Nothing '以picture作为图片格式的声明  
  ‘声明Public Sub capture_window()  
  Public Sub capture_window()
   Me.Visible = False
   Dim capture1 As IntPtr = CreateDC("DISPLAY", Nothing, Nothing, Nothing)
   Dim get1 As Graphics = Graphics.FromHdc(capture1)
   '创建一个新的Graphics对象
   picture = New Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, get1)
   '根据屏幕大小创建一个相同大小的Bitmap
   Dim get2 As Graphics = Graphics.FromImage(picture)
   Dim get3 As IntPtr = get1.GetHdc() '获取屏幕的句柄
   Dim get4 As IntPtr = get2.GetHdc() '获取位图的句柄   
   BitBlt(get4, 0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, get3, _
   0, 0, 13369376) '把当前屏幕复制到位图中
   get1.ReleaseHdc(get3) '释放屏幕句柄
   get2.ReleaseHdc(get4) '释放位图句柄
   picture.Save("CapturePicture.jpg", ImageFormat.Jpeg)
   MessageBox.Show(" 已经把当前截取屏幕保存到CapturePicture.jpg,检查程序根目录")
   Me.Visible = True
   End Sub  
  进入 捕获当前屏幕ToolStripMenuItem_Click事件中  
  Private Sub 捕获当前屏幕ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 捕获当前屏幕ToolStripMenuItem.Click
   capture_window() '调用函数,开始捕获程序  
   End Sub  
  进入 退出程序ToolStripMenuItem_Click事件中  
  Private Sub 退出程序ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 退出程序ToolStripMenuItem.Click  
   NotifyIcon1.Visible = False
   '关闭系统
   Me.Close()
  End Sub
  好了现在我们运行程序进行测试一下,注意如果我们不想看到Form1应用程序窗体出现在任务栏中而只是想把程序图标显示在任务栏中请选择Form1窗体中的属性ShowInTaskbar=False如图4


[附件已丢失]
  运行程序,选中抓捕当前屏幕即可如图5,图片将会保存在你程序的根目录中,图片名称为:CapturePicture.jpg如图6所示


[附件已丢失]




[附件已丢失]
  程序成功运行,一个简单的屏幕捕捉程序就完成了,大家有兴趣的话还可以再去添加其他的功能,如只针对应用程序窗体进行捕捉等,使得应用程序的功能更多。




2212254133-0.jpg
2212254Y5-1.jpg
221225M15-2.jpg
2212254C2-3.jpg
2212256214-4.jpg
22122513E-5.jpg

0

主题

561

回帖

599

积分

软件网站元老会员

积分
599
发表于 2017-3-26 23:08:16 | 显示全部楼层
很精美,多样化,店家服务态度很好,满意!

0

主题

560

回帖

586

积分

软件网站元老会员

积分
586
发表于 2017-3-27 14:36:50 | 显示全部楼层
的,卖家没有骗人哦,好评下!

0

主题

827

回帖

980

积分

软件网站元老会员

积分
980
发表于 2017-3-28 03:33:29 | 显示全部楼层
得很好,商家对我各种不懂的问题都很耐心解答,以后还会再合作的

0

主题

565

回帖

596

积分

软件网站元老会员

积分
596
发表于 2017-3-28 03:38:54 | 显示全部楼层
这次合作,整个过程很顺利,今后我的店铺还是会请你帮我装修,希望越来越好

0

主题

572

回帖

596

积分

软件网站元老会员

积分
596
发表于 2017-3-29 16:51:45 | 显示全部楼层
不太了解的我,抱着试试的态度开始了第一次的合作,没有想到效果非常不错,在沟通的过程中,我也学会了很多装修知识,不仅店铺漂亮了,还交到了个朋友,不错不错!

1

主题

551

回帖

569

积分

软件网站元老会员

积分
569
发表于 2017-3-29 18:10:44 | 显示全部楼层
!下次有模板还到这边
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|

GMT+8, 2026-10-21 22:24

安卓脚本软件 · 键鼠盒子 · HID · 机械臂

快速回复 返回顶部 返回列表

随机阅读 · 更多好帖