使用 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 的相关文章

随机推荐

  • 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