使用 VB.Net 的 GhostText

2024-05-10

大家好,我尝试创建一个幽灵文字在文本框上使用标签。我使用的是VB.Net2005。我用这段代码完成了这个:

Public Class frmDataEntry

    Private Sub PhantomTextLastName()
        If txtLastName.Text = "" Then
            lblLastName.Visible = True
        Else
            lblLastName.Visible = False
        End If
    End Sub

    Private Sub PhantomTextFirstName()
        If txtFirstName.Text = "" Then
            lblFirstName.Visible = True
        Else
            lblFirstName.Visible = False
        End If
    End Sub

    Private Sub PhantomTextMiddleInitial()
        If txtMiddleInitial.Text = "" Then
            lblMiddleInitial.Visible = True
        Else
            lblMiddleInitial.Visible = False
        End If
    End Sub

    Private Sub txtLastName_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtLastName.Click
        lblLastName.Text = "Last Name"
    End Sub

    Private Sub txtLastName_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtLastName.KeyDown
        PhantomTextLastName()
    End Sub

    Private Sub txtLastName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtLastName.TextChanged
        PhantomTextLastName()
    End Sub

    Private Sub lblLastName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblLastName.Click
        txtLastName.Focus()
    End Sub

    Private Sub txtFirstName_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFirstName.Click
        lblFirstName.Text = "First Name"
    End Sub

    Private Sub txtFirstName_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtFirstName.KeyDown
        PhantomTextFirstName()
    End Sub

    Private Sub txtFirstName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFirstName.TextChanged
        PhantomTextFirstName()
    End Sub

    Private Sub lblFirstName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblFirstName.Click
        txtFirstName.Focus()
    End Sub

    Private Sub lblMiddleInitial_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblMiddleInitial.Click
        txtMiddleInitial.Focus()
    End Sub

    Private Sub txtMiddleInitial_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtMiddleInitial.Click
        lblMiddleInitial.Text = "Middle I."
    End Sub

    Private Sub txtMiddleInitial_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtMiddleInitial.KeyDown
        PhantomTextMiddleInitial()
    End Sub

    Private Sub txtMiddleInitial_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtMiddleInitial.TextChanged
        PhantomTextMiddleInitial()
    End Sub
End Class

有什么方法可以减少这些代码,这样当我尝试添加另一个文本框时,我就永远不必重新输入一堆代码。我有使用模块和类的基本知识,但我真的不知道如何将其应用到这个项目中。我是新手,如果您有任何教程可以帮助我解决这个问题,请给我链接。预先感谢并上帝保佑。


创建一个用户控制 http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol%28v=VS.80%29.aspx。用户控件背后的代码可能类似于:

 Public Class GhostTextbox

    Private _ghostText As String
    Public Property GhostText As String
        Get
            Return _ghostText
        End Get
        Set(ByVal Value As String)
            _ghostText = Value
        End Set
    End Property

    Public Property ActualText As String
        Get
            Return Me.TextBox1.Text
        End Get
        Set(ByVal Value As String)
            Me.TextBox1.Text = Value
        End Set
    End Property

    Private Sub PhantomText()
        If TextBox1.Text = "" Then
            Label1.Visible = True
        Else
            Label1.Visible = False
        End If
    End Sub

    Private Sub TextBox1_Click(sender As Object, e As System.EventArgs) Handles TextBox1.Click
        Label1.Text = GhostText
    End Sub

    Private Sub TextBox1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        PhantomText()
    End Sub

    Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
        PhantomText()
    End Sub

    Private Sub GhostTextbox_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Label1.Text = GhostText
    End Sub
End Class

然后,使用这个自定义控件而不仅仅是一个TextBox。您需要做的就是设置GhostText您添加的每个新控件的属性,而不是再次重做相同的逻辑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 VB.Net 的 GhostText 的相关文章

  • 非托管代码调用 vb.net 回调

    我正在将处理 COM 对象事件的 vb net 应用程序 可能用 VB6 编写 从框架 1 1 升级到 WPF 2 0 3 5 代码 为简洁起见 简化了对象名称 public class MyClass Private WithEvents
  • 如何在 vb.net 中更改 DateTimePicker 的日期格式

    如何更改 vb net 中 DateTimePicker 的日期格式 以便日期以 dd mm 1990 格式显示 没有任何时间值 我尝试将格式更改为 短 虽然这提供了我需要的日期格式 但它不会删除时间 您需要将 DateTimePicker
  • VB.NET 中的自动递增文本框

    单击按钮后如何增加文本框内容 将其放在按钮单击事件中 Dim int As Integer Integer TryParse TextBox1 Text int TextBox1 Text int 1
  • 使用新数据输入自动更新图表

    我的图表从 DataGridView 加载数据 如果将新值插入到 DataGridView 中 我希望自动使用新数据更新图表 我的图表必然是table1 and table2在我的 DataGridView 中 它从 DataTable 获
  • 更改文本框中文本的前景色和背景色

    我正在使用 VB NET 制作 C 代码编辑器应用程序 我想在用户键入关键字时更改关键字的颜色 另外 我正在寻找一种方法来突出显示某些代码行 有没有办法更改文本框或富文本框中一段文本的前景色和背景色 我真的不知道你想做什么 所以这里有一些选
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex
  • 命令式代码与声明式代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图理解命令式范例和声明式范例之间的区别 因为我必须对 Visual Basic 进行分类 NET 在不同的范式中 除了面向对象之外
  • 使用 GIT 自动增加 AssemblyFileVersion

    好吧 我知道这可能不是传统的 但除此之外 我使用 AssemblyFileVersion 作为我的 构建名称 字符串 它的格式如下 File Version information for an assembly consists of t
  • 将Access数据库中存储的图片加载到VB.NET程序中

    我有一个通过数据源与 VB 项目链接的 Access 数据库 在其中一个表的数据库中 我有一个 OLE 对象字段 我在此字段中保存了 BMP 格式和 JPG 格式的图片 我遇到的问题是将这张图像加载到我的应用程序中 这就是我希望能够做到的
  • 多个 Visual Studio 项目抱怨临时文件丢失,因此无法打开。错误代码 &H80070003

    我在终端服务器上运行 Visual Studio 2010 并且已经运行了一段时间 问题相对较少 今天早上 我启动了我的电脑 在英国的长周末期间 似乎出现了以下问题 我有很多项目 但不是我的所有项目 也不是给定解决方案中的所有项目 抱怨无法
  • 打印对话框不显示在 64 位计算机上的 Crystal Report Viewer 中

    我有一个运行 Windows 2008 Server 64 位的客户端 他正在运行我们的软件 它具有内置的水晶报表查看器功能 无论如何 打印对话都行不通 它在我们的 32 位机器上运行并且我们验证了它 我在我们的 64 位机器上验证了它 打
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • vb.net HtmlAgilityPack 在 div 之后插入字符串

    我试图在 div 末尾直接插入一些我自己的 html 这个 div 里面有其他 div Dim HtmlNode As HtmlNode HtmlNode CreateNode span class Those were the frien
  • 没有为 1 个或多个必需参数给出值。更新SQL

    我正在编写一个程序 当用户在列表视图上选择记录时 该程序会更新密码或积分 我收到错误 没有为 1 个或多个必需参数给出值 我不知道如何纠正 我是否遗漏了一些明显的东西 Dim sql As String UPDATE Users SET P
  • 如何设置 Firefox 配置文件:Selenium RC、.Net 客户端驱动程序?

    我正在使用 Selenium RC Net 客户端驱动程序 我在 c selenium 目录中创建了一个 Firefox 配置文件 这是我的代码 Dim MySelenium As ISelenium Nothing MySelenium
  • 变量替换为字符串

    我可以做类似的事情吗 s said s blah name blah 在 VB NET 中 写字越来越痛苦name said blah blah 在VB NET 14 对于VS2015 中 您可以使用字符串插值 https msdn mic
  • 将签名位图转换为签名字符串(很奇怪的一个)

    基本上我需要将位图图像转换为字符串 但这不是常见的 困境在于该字符串由两部分组成 1 积分 2 线路 我需要将图像转换为由 分隔的两个部分 我得到的一个例子是 221A 221A270A270A25032503200720071716171
  • VB.NET vNext 中的迭代器以及 C# 中迭代​​器的限制

    我刚刚在上看到异步CTP网站 http msdn microsoft com en us vstudio async aspxVB NET 的下一个版本将有迭代器 我猜它们包含了迭代器 因为重写过程与新的迭代器所使用的过程类似 async
  • 通过名称访问表单的控件

    不确定这篇文章的标题是否准确 我试图通过在循环中 组合 它们的名称来访问 Windows 窗体控件及其属性 但我似乎找不到相关文档 使用VB net 基本上 假设我有以下内容 Dim myDt As New DataTable Dim ro

随机推荐

  • AVMutableComposition - 导出错误的视频转换

    导出 VideoAsset 后 问题 视频方向是不是原始变换 导出视频层似乎总是景观 尝试去 变换视频层方向 旋转至原始方向 视频层大小 使其全屏尺寸 按原始方向 一些注意事项 videoAsset 的 CGRect 从一开始就是相反的 a
  • 尝试从 Rails 控制器调用辅助方法时出现 NoMethodError

    我得到了一个NoMethodError当尝试从我的控制器类之一访问我的帮助器模块之一中定义的方法时 我的 Rails 应用程序使用helper类方法与 all符号如下图所示 class ApplicationController lt Ac
  • 从 SparkSession.read() 获取“org.apache.spark.sql.AnalysisException:路径不存在”[重复]

    这个问题在这里已经有答案了 我正在尝试读取提交的文件spark submit在客户端模式下连接到yarn集群 将文件放入 HDFS 不是一个选项 这是我所做的 def main args Array String if args null
  • 操作栏文本颜色

    如何更改 ActionBar 的文本颜色 我继承了 Holo Light 主题 我可以更改 ActionBar 的背景 但我不知道要调整什么属性来更改文本颜色 好的 我可以使用属性 android textColorPrimary 更改文本
  • 尝试使用 Python 库 azure-storage-blob 时未解决导入“azure.storage.blob”问题

    以此 URL 为例 https learn microsoft com en us azure storage blobs storage quickstart blobs python list the blobs in a contai
  • CSS动画可见性:可见;适用于 Chrome 和 Safari,但不适用于 iOS

    在Chrome WinXP上为19 0 1084 46 m 和Safari OS X 10 7 4上为5 1 7 中 这个小提琴http jsfiddle net Vkpwm http jsfiddle net Vkpwm 作品 单击goo
  • 有没有办法在Python中使用非openssl md5作为hashlib?

    我生成 md5 内容哈希值用于上传验证 但最近我注意到 对于在启用 FIPS 的计算机上运行的任何用户来说 这都会失败 FIPS 禁用 openssl md5 导致ValueError当我尝试初始化 hashlib 时 通常我会使用 SHA
  • 使用 Boost program_options 指定级别(例如 --verbose)

    我的一些选择有多个级别 例如的 冗长 我希望我的用户在以下两种等效样式之间进行选择 no argument verbosity of 1 my program v count the v s verbosity of 4 my progra
  • 在 Eclipse 中突出显示修改的行

    在 netbeans 中 如果我打开一个受版本控制的文件 则修改的行会在左侧突出显示 绿色表示新行 蓝色表示修改行 在Eclipse中是否可以得到类似的效果 打开首选项窗口 搜索 差异 选择快速差异 将 使用此参考源 更改为 SCM 提供程
  • 双向 SSL 说明

    我对双向 SSL 的工作原理有些困惑 客户端如何创建其证书以发送到服务器 是从服务器生成并分发给客户端吗 另外 双向 SSL 相对于单向 SSL 有何优势 两个证书在连接之前都应该存在 它们通常由证书颁发机构创建 不一定相同 在其他情况下
  • Mailchimp 自动化多次发送同一封电子邮件

    我在登陆页面上使用 mailchaimp 自动化工作流程向我的客户发送电子邮件 自动化工作流程是 客户在我的表格中输入他的电子邮件 使用 api V3 将客户添加到我的 mailchimp 列表 或更新 如果已存在 我使用此触发器调用发送第
  • 如何在公共 Maven/Ivy 存储库中搜索特定类?

    有一些网站 例如http mvnrepository com http mvnrepository com 让我搜索 工件 并给出定义 我可以将其添加到我的项目中 以便从公共存储库自动下载库 但是这个特定的例子 mvnrepository
  • java套接字/输出流写入:它们会阻塞吗?

    如果我只写入输出流上的套接字 它会阻塞吗 只有读取才能阻塞 对吗 有人告诉我写入可以阻塞 但我只看到套接字读取方法的超时功能 Socket setSoTimeout 对我来说 写入可能会阻塞是没有意义的 如果我只写入输出流上的套接字 它会阻
  • 从 spinner sqlite 加载文本和值

    我有一个微调器将数据加载到 sqlite 我在数据库中有字段 ID 和字段名称 private void loadSpinnerDataHama database handler DatabaseSpinner db new Databas
  • 无法使用 python 在 aws cdk 中编写策略文档

    您好 我正在开发 AWS CDK 我正在努力制定政策 下面是我的代码 MWSECSServiceRole iam Role self MWSECSServiceRole assumed by iam ServicePrincipal ecs
  • 尝试 .Split 时出现“列必须与键长度相同”错误

    下面的代码在 Python 3 8 10 中运行良好 但在 Python 3 10 中无法运行 知道可能是什么问题吗 import pandas as pd import requests url https coinmarketcap c
  • 如何在node.js中使用混合C++和.Net dll? (错误:已调用 abort())

    我想在 Visual Studio 2015 中使用包含 C 和 C 代码的 dll 创建本机节点扩展 我无法使其工作如下我自己的指示 https stackoverflow com q 11257690 709537去年的 这是基于最新的
  • pdf文件文本阅读和搜索

    我想从 pdf 文件中读取文本并将文本搜索到 pdf 文件中 这是我知道的链接 这些都帮不了我 使用 Quartz 2D 解析 pdf 时获取文本位置 https stackoverflow com questions 3627745 ge
  • 变量如何存储在堆栈中?

    我读到有两个内存区域 一个是堆栈 另一个是堆 基本数据类型 如 int double float 等 存储在堆栈中 而引用类型存储在堆中 我们知道堆栈是LIFO这意味着最后推送的元素将首先被删除 现在假设以下代码 int first 10
  • 使用 VB.Net 的 GhostText

    大家好 我尝试创建一个幽灵文字在文本框上使用标签 我使用的是VB Net2005 我用这段代码完成了这个 Public Class frmDataEntry Private Sub PhantomTextLastName If txtLas