扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
TextBox组件(文本框组件)是一种常用的 也是比较容易掌握的组件 应用程序主要使用它来接收使用者于输入文字信息 在前面内容中已经或多或少的接触到TextBox组件 本节就来详细探讨一下Visual 中TextBox组件的使用方法 一 TextBox组件 TextBox类 当我们使用Visual Basic Net集成开发环境开发应用程序时 在从【工具箱】的【Windows窗体】选项卡中向Form 的设计窗体拖入一个TextBox组件的后 我们可能并没有感觉到即使时这样一个简单的操作 Visual Basic Net都做了很多幕后工作 主要工作和步骤如下 首先实例化System Windows Forms TextBox类 并根据拖动到窗体的位置和形状分别设定TextBox实例的各个属性 我们看到的设计窗体 其实是Form 类的一个实例 而Form 类首先是从System Windows Forms Form类继承而来 Form 类中的成员根据使用者往窗体中拖入的组件不同而不同 各个成员通过Add或AddRange方法加入到Form 中 这样拖入的组件才能够显示在设计窗体上 以上这些都完全不同于以前Visual Basic 通过上述步骤 我们不难得到TextBox组件和TextBox类之间的关系 TextBox组件是命名空间System Windows Forms中的TextBox类的实例 在从【工具箱】的【Windows窗体】选项卡中拖入窗体的任一组件 都是 Net框架类库—— Net Framework SDK中封装的某一个类的实例 通过上述步骤也不难看出 Visual Basic Net的确才是真正的面向对象(OOP)的开发语言 二 TextBox类的成员 TextBox组件使用虽然比较简单 但TextBox类的构成成员却是非常的丰富 在一般性的编程中 主要涉及到三类 属性 方法和事件 表 表 和表 分别是TextBox类的常用属性 方法和事件及其简单说明 属性 说明 AcceptsReturn 指示在多行TextBox组件中按ENTER键时 是在组件中创建一行新文本还是激活窗体的默认按钮 AcceptsTab 该值指示在多行文本框组件中按TAB键时 是否在组件中键入一个TAB字符 而不是按选项卡的顺序将焦点移动到下一个组件 AllowDrop 获取或设置一个值 该值指示组件是否可以接受用户拖放到它上面的数据 Anchor 获取或设置组件的哪些边缘锚定到其容器边缘 BackColor 获取或设置组件的背景色 BackgroundImage 获取或设置在组件中显示的背景图像 BorderStyle 获取或设置文本框组件的边框类型 Bottom 获取组件的下边缘与其容器的工作区的上边缘之间的距离 CanFocus 获取一个值 该值指示组件是否可以接收焦点 CanSelect 获取一个值 该值指示是否可以选中组件 CanUndo 获取一个值 该值指示用户在文本框组件中能否撤消前一操作 CharacterCasing 获取或设置TextBox组件是否在字符键入时修改其大小写格式 ContextMenu 获取或设置与组件关联的快捷菜单 Reated 获取一个值 该值指示组件是否已经创建 Cursor 获取或设置当鼠标指针位于组件上时显示的光标 DataBindings 为该组件获取数据绑定 Dock 获取或设置组件停靠到父容器的哪一个边缘 Enabled 获取或设置一个值 该值指示组件是否可以对用户交互作出响应 Focused 获取一个值 该值指示组件是否有输入焦点 Font 获取或设置组件显示的文字的字体 ForeColor 获取或设置组件的前景色 MaxLength 获取或设置用户可以在文本框组件中最多键入的字符数 Multiline TRUE/FALSE 该值指示它是否为多行文本框组件 PasswordChar 获取或设置字符 该字符用于屏蔽单行 ScrollBars 获取或设置哪些滚动条应出现在多行TextBox 组件中 Text 获取或设置文本框中的当前文本 TextAlign 设置文本框内文本得对齐方式 TextLength 获取组件中文本的长度 表 TextBox类的常用属性及其说明 方法 说明 AppendText 向文本框的当前文本追加文本 Clear 从文本框控件中清除所有文本 ClearUndo 从该文本框的撤消缓冲区中清除关于最近操作的信息 Copy 将文本框中的当前选定内容复制到剪贴板 Cut 将文本框中的当前选定内容移动到剪贴板中 DoDragDrop 开始拖放操作 Focus 为控件设置输入焦点 GetChildAtPoint 检索位于指定坐标处的子控件 GetNextControl 按照子控件的Tab键顺序向前或向后检索下一个控件 Hide 对用户隐藏控件 Paste 用剪贴板的内容替换文本框中的当前选定内容 PointToClient 将指定屏幕点的位置计算成工作区坐标 PointToScreen 将指定工作区点的位置计算成屏幕坐标 ResetBindings 将DataBindings属性重置为其默认值 Select 选择控件中的文本 SelectAll 选定文本框中的所有文本 SelectNextControl 激活下一个控件 Show 向用户显示控件 SuspendLayout 临时挂起控件的布局逻辑 Undo 撤消文本框中的上一个编辑操作
创新互联是一家专注于网站设计制作、成都网站建设与策划设计,博州网站建设哪家好?创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:博州等地区。博州做网站价格咨询:028-86922220
表 TextBox类的常用方法及其说明
事件 说明 Click 在单击文本框时发生 CursorChanged 当 Cursor 属性的值更改时发生 DoubleClick 在双击控件时发生 DragDrop 在完成拖放操作时发生 DragEnter 在将对象拖入控件的边界时发生 DragLeave 在将对象拖出控件的边界时发生 DragOver 在将对象拖到控件的边界上发生 EnabledChanged Enabled 属性值更改后发生 Enter 进入控件时发生 GiveFeedback 在执行拖动操作期间发生 GotFocus 在控件接收焦点时发生 KeyDown 在控件有焦点的情况下按下键时发生 KeyPress 在控件有焦点的情况下按下键时发生 KeyUp 在控件有焦点的情况下释放键时发生 Leave 在输入焦点离开控件时发生 LostFocus 当控件失去焦点时发生 MouseDown 当鼠标指针位于控件上并按下鼠标键时发生 MouseEnter 在鼠标指针进入控件时发生 MouseHover 在鼠标指针悬停在控件上时发生 MouseLeave 在鼠标指针离开控件时发生 MouseMove 在鼠标指针移到控件上时发生 MouseUp 在鼠标指针在控件上并释放鼠标键时发生 MouseWheel 在移动鼠标轮并且控件有焦点时发生 Move 在移动控件时发生 Paint 在重绘控件时发生 Resize 在调整控件大小时发生
TextBox类的常用事件及其说明当然TextBox类除了上述的属性 方法和事件 还有很多属性 方法和事件 和很多受保护的方法和受保护的属性 由于它们使用的几率较少和篇幅所限 就不能一一介绍了 感兴趣的朋友可以参阅相关资料
三.掌握TextBox组件的基本用法 由于TextBox类的成员实在太丰富 一个示例要想介绍上述所有的方法 属性和事件是不可能 在下面介绍的示例中 将突出介绍在Visual 集成开发环境下通过对设定不同的属性值实现三种常见的TextBox组件式样 以及TextBox组件的方法的调用方法和在Visual Basic Net集成开发环境中如何加入TextBox组件不同事件对应的处理代码 让各位更加熟悉TextBox类和Visual Basic Net开发环境 下面是TextBox示例的具体实现步骤 启动Visual Studio Net 选择菜单【文件】|【新建】|【项目】后 弹出【新建项目】对话框 将【项目类型】设置为【Visual Basic项目】 将【模板】设置为【Windows应用程序】 在【名称】文本框中输入【TextBox组件】 在【位置】的文本框中输入【E:\项目】 然后单击【确定】按钮 这样在 E:\VS NET项目 目录中就产生了名称为 TextBox组件 的文件夹 并在里面创建了名称为 TextBox组件 的项目文件 把Visual Studio Net的当前窗口切换到【Form VB(设计)】窗口 并从【工具箱】中的【Windows窗体组件】选项卡中往Form 窗体中拖入下列组件 并执行相应操作 三个Label组件 三个TextBox组件 分别为TextBox TextBox 和TextBox 按照表 中数值来设定设定组件的主要属性 请注意TextBox组件中的属性设定值
表 【TextBox组件】项目窗体中各组件的主要属性设定数值表
按照表 各值设定后的TextBox组件三种常用的式样也就产生了 具体如图 所示
图 程序设计时TextBox组件三种常见使用方法
这三种式样就是单行的TextBox组件 多行的TextBox组件和用以输入类似密码数据的TextBox组件 为TextBox 组件添加事件和事件的处理代码 此次添加的事件的名称是Leave 当TextBox 组件失去焦点时触发此事件 添加TextBox 组件的其他事件也可仿照下面的处理方法 下面是利用Visual Basic Net在【TextBox组件】项目中添加TextBox 组件的Leave事件和添加Leave事件的处理代码的具体步骤 首先把Visual Basic Net的当前窗口切换到Form vb的代码编辑界面 然后在如图 所示的选择框中选择TextBox
图 选择TextBox组件
之后 在图 所示的选择框中选择 Leave
图 选取Leave事件
在选择 Leave 之后 Visual Basic Net会自动在Form vb中产生TextBox 的Leave事件 在Leave事件的事件处理代码区添加下列代码 下面代码调用了TextBox 组件的 Clear 方法并且显示一个TextBox 组件失去焦点的提示框
TextBox Clear ( ) 清除TextBox 组件的显示内容MsgBox ( 失去焦点! ) 弹出提示框
至此【TextBox组件】项目的全部工作就完成了 图 是程序编译后运行界面
图 【TextBox项目】的运行界面
lishixinzhi/Article/program/net/201311/12721
通过VB NET VB程序员终于拥有了全部面向对象的特征 其中之一就是程序员以创建抽象类 虽然抽象类在编程中的作用常被过高估计 但抽象类确实提供了不少开发可行性 一段时间以来 VB程序员都在要求微软向他们提供全面的备受C++及JAVA程序员推崇的面向对象的特性 虽然有少部份与OOP相关的特征已被添加到旧的版本上 但程序员还得等待VB NET 将实际意义上的OOP添加到VB上去 通过OOP你可以创建抽象类 虽然大家都对它寄予了厚望 但令人惭愧的是抽象类仅仅只能给程序员提供更多的开发可行性而已 阅读本文您需要具备一定的面向对象以及VB NET的相关知识 很容易解释什么是抽象类? 抽象类即是不能被实例化的类 而且你不能够在自己的程序里通过这种类来生成一个对象 你也许会认为不能被实例化的类是没多大用处的 事实上 在某些环境下 抽象类是非常有用的 你可以把它作为一个基础类以此为基类创建新的类 在对功能要求不高的环境下生成的类 会向你提供一个规定的启始点 通过这个点你可以推导出非抽象类 在此假设一个要用抽象类的程序设计 假设图形程序提供了大量的drawing类:比如圆 三角 曲线等等 所有这些作drawing类都有某个共同的特性 比如位置 大小 色彩 删除等属性 其它的类成员 比如描绘图形的方法就不同于每个单独的类 因此 这样为利用抽象类创造了一个理想的环境 在抽象类中 你需要定义所有drawing类都需要的全部通用类成员 因为drawing类不响应任何图形 但是当把它作为shape specific drawing类中的base类 你需要确认所有这些非 抽象类拥有最基本的功能 创建抽象类 对抽象类的定义很简单 只要在定义域里加入关键字MustInherit 如 Public MustInherit class MyAbstract class End class除开要包含关键字之外 抽象类的定义与非抽象类的定义没什么两样 抽象类包含了从其它类承继而来的属性及方法等等 但是 在抽象类中定义的类成员(属性及方法)是如何与衍生类中的定义元素产生联系的呢?在此并没有复杂的规则 但你作出的决定是与你所拥有的类的性能及它将衍生出来的 类所密切相关 你有三个选择 抽象类中已有的功能比如属性 方法等在衍生类中可以被重载 实现这一功能只要在成员定义中输入Overridable关键字 如 Public Overridable Sub Move(NewX As Integer NewY As Integer) End Sub 为重载abstract base 类中的成员 衍生类在执行语句中须使用Overrides关键字段 如 Public Overrides Move(NewX As Integer NewY As Integer) End Sub 抽象类中已有的功能不能在衍生类中重载 即是 衍生类必须使用抽象类定义的成员 如果你在抽象类中不使用任何特殊字段来定义任一成员将会产生该缺省 以下代码定义了抽象类中的Xpos属性 衍生类必须使用该属性 因为该属性不能被重载 如 Public Property XPos() As Integer End Property利用MustOverride关键字来定义抽象类成员 该成员可以在衍生类中重载 以下举例说明了衍生类必须执行名为GetObjectAt()的方法 Public MustOverride Function GetObjectAt(X As Integer Y As Integer) As Object请注意MustOverride成员不需要End Sub 或End Function语句 使用MustOverride最方便的地方在于它不仅规定了成员的名称同样也规定了成员的符号 先前的例子要求任一衍生类都需定义名称为GetObjectAt()的方法 因此会产生两种类型的整型变量以及返回一个类型对象 该方法是在衍生类中的执行是完全根据程序员的指令要求 通过MustOverride字段说明的方法一些时候也被称为abstract 成员 抽象类与接口如果你熟悉接口的相关知识 你会认为抽象类与它是如此相似 事实上只是一部份类似 定义仅含有抽象成员的抽象类基本上是与接口的定义相同的 因为你已经规定衍生类必须执行某个具有专用符号的成员 另外 抽象类具有其它的功能 是接口无法实现的 尤其是在定义非抽象类成员的基本功能薄?BR当你在认为抽象类或是接口都能如常运作时 请谨记如下几点 除了从一个类(抽象或非抽象) 派生出来 一个衍生类可以执行多个接口 从抽象类派生出来的子类同样能够执行一个或多个接口 这要依你的项目而定 你可以只用一个抽象类或多个接口 或者抽象类和接口混合使用 VB和 NET在这项工作上提供了非常大的灵活性 因此你可以通过不同的方式来达到你想要的结果 底线是一些项目必须是通过抽象类来实现 抽象类也许会被认为是一种非常专业的编程方法 它可帮程序员减少工作量并且可以生成更简便功能更强大的程序 实际操作中使用抽象类 设想一下你正在为一家大公司开发一个新的员工数据库 你的工作就是监督类的执行 使雇员的基本情况与管理部门的要求相吻合 同样 在区分公司分支机构的要求时也提供更大的便利 基本要求如下: 抽象类里有姓名 雇用时间等属性 这些属性不会被重载 因为大多数雇员来自美国 因此在抽象类里执行退休ID 以运行社会保障号码 国外分公司将会利用不同的方式来鉴别雇员的退休ID 因此该属性会在衍生类里重载 以便单个分支机构分别执行 名称为补偿金的方法不会引起争议 然后会返回一个含有雇员补偿金细节的类型对象 因为不同分公司都规定不同的补偿金 薪金 佣金 红利等 因此灵活的执行这些对象是很有必要的 由此会产生一个抽象方法 由此而产生的抽象类的代码 称为EmployeeBase 会在第一栏里显示 位于法国的分公司的程序员用EmployeeBase类作为EmployeeFrance类的基类 与当地雇员记录软件合作使用 因此 衍生类需要承继名称及雇用日期等字段 更多的是 在EmployeeBase 类中的RetirementID成份适合运用在法国 因此 新类不会重载该成份 程序员做的所有这些工作是为了执行abstract Compensation member 的重载 但是在英国 RetirementID 属性不适用于该地 因此衍生类将会重载该成员 同样的也会重载Compensation 成员 lishixinzhi/Article/program/net/201311/13310
1.不正确
Dim abc As myClass,定义一个可以引用myClass类型对象的变量abc。这个abc变量存在于栈上。
abc=New myClass。New myClass创建myClass实例对象,这个对象存在于托管堆上。然后(同时)让abc引用(指向)这个对象。
abc变量在栈上,而对象在托管堆上。
abc储存的是对象的地址,而不是对象本身。
看下面的代码
Dim a As myClass,b As myClass,c As myClass
a=New myClass
b=a
c=a
整个过程中只创建了一个myClass对象,位于托管堆上。
三个myClass类型的变量a、b、c位于栈上,都指向了这一个myClass对象
2.类的成员分 实例成员 和 静态成员
实例成员 必须在实例对象上调用
静态成员 可以直接调用,不需要实例对象。
这个一般是一个Form类的构造函数。
MyBase.New ( )是调用父类的构造函数,InitializeComponent ( )是调用自己的InitializeComponent 方法。一般你在VS里拖界面,VS会自动帮你生成这个方法的实现,里面是用代码实现你拖出来的界面布局。
该实例有很多实现方法,下面介绍一种不同的给你:
首先要在窗体中载入以下控件:progressbar(进度条),label(用来实时显示文本提示),两个timer(分别控制进度条进度的增减),然后用以下代码就能实现:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Timer1.Enabled = True
Timer1.Interval = 500
Timer2.Interval = 500
ProgressBar1.Value = 0
ProgressBar1.Maximum = 100
ProgressBar1.Minimum = 0
End Sub
'上述过程是设置控件的初始值,也可以在属性面板设置
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
ProgressBar1.Value += 1
Label1.Text = "当前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 100) Then
Timer1.Enabled = False
Timer2.Enabled = True
End If
End Sub
'timer1用来控制进度的增加
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
ProgressBar1.Value -= 1
Label1.Text = "当前完成" ProgressBar1.Value "%"
If (ProgressBar1.Value = 0) Then
Timer1.Enabled = True
Timer2.Enabled = False
End If
End Sub
'time2用来控制进度的减少
End Class
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流