`
cjc
  • 浏览: 680469 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何取得文本框中包含指定字符串的行

 
阅读更多

      文本框属性为允许多行显示时,由于是软回车实现的分行,无法用SPLIT(TEXT1.TEXT,VBCRLF)准确地取出指定行的内容。本文利用SENDMESSAGE 系列函数,通过发送文本框消息,实现了获取包含指定字符串的行,并演示了如何获取文本框中文本总行数和任意指定行的文本内容。

'add a textbox with "multiline=true","scrollbars=2".

Private Declare Function SendMessage Lib "USER32" Alias "SendMessageA" _
    (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
    lParam As Any) As Long
Private Declare Function SendMessageByNum Lib "USER32" _
    Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, _
    ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessageByString Lib "USER32" Alias _
    "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam _
     As Long, ByVal lParam As String) As Long

Private Const EM_LINEINDEX = &HBB
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_GETLINE = &HC4
Private Const EM_LINELENGTH = &HC1

Function GetLineText(ByVal txtbox As TextBox, ByVal LineIndex As Long) As String '返回指定行的内容
  Dim lc As Long, linechar As Long
  linechar = SendMessageByNum(txtbox.hWnd, EM_LINEINDEX, LineIndex, 0)
  lc = SendMessageByNum(txtbox.hWnd, EM_LINELENGTH, linechar, 0) + 1
  GetLineText = String(lc + 2, 0)
  Mid(GetLineText, 1, 1) = Chr(lc And &HFF)
  Mid(GetLineText, 2, 1) = Chr(lc \ &H100)
  lc = SendMessageByString(txtbox.hWnd, EM_GETLINE, LineIndex, GetLineText)
  GetLineText = Left(GetLineText, lc)
End Function

 

Function getlinewithstr(ByVal txtbox As TextBox, ByVal mystr As String) As String
Dim linecount As Long, temp() As String, i As Long
linecount = SendMessage(txtbox.hWnd, EM_GETLINECOUNT, 0, 0) '返回行数
ReDim temp(1 To linecount)
For i = 1 To linecount
temp(i) = "第" & i & "行:" & GetLineText(txtbox, i - 1) '添加行号
Next
getlinewithstr = Join(Filter(temp, mystr), vbCrLf) ' 字符串过滤
Erase temp
End Function

Private Sub Command1_Click()
MsgBox getlinewithstr(Text1, "CSDN"), 0, "包含“CSDN”的行"
End Sub

Private Sub Form_Load()
Dim a(25) As String, i As Long
For i = 0 To 25
a(i) = String(50, Chr(i + 97))
Next
Text1.Text = Join(a, "CSDN")

End Sub

分享到:
评论

相关推荐

    MFC 查找文件中指定字符串

    本程序是一个基于MFC的小项目,旨在教授如何在文件中查找并统计指定字符串的出现情况,包括总个数、行号以及频率。对于初学者来说,这是一个很好的起点,可以帮助理解MFC的基本结构和文件操作。 1. **MFC基础** - ...

    文本框指定字符串长度

    标题“文本框指定字符串长度”和描述“ios限制uitextfield字符长度”所指的就是如何在iOS中设置`UITextField`的字符限制。 首先,我们可以使用`UITextField`的代理方法来实现这一功能。`UITextField`遵循`...

    精彩编程与编程技巧-在文本框中快速增加一串字符...

    - **字符串替换**:使用`Replace`函数替换字符串中的子串。 - **字符串分割**:使用`Split`函数将字符串分割成数组。 - **字符串转换**:使用`LCase`、`UCase`等函数转换字符串的大小写。 #### 示例代码 ```vba Dim...

    检测文件中是否包含指定字符串(1KB)

    以上就是关于检测文件中是否包含指定字符串(1KB)的相关知识点,包括使用控件构建用户界面,编写源码实现搜索功能,利用统计计数计算出现次数,以及在有限的资源下优化处理大文件的方法。这些技术都是IT从业者在...

    在文本框中快速增加一串字符

    2. **定义并初始化变量**:定义了一个字符串变量`temp`,并将其值设为当前日期时间的字符串形式,前缀为“Updated:”。 3. **使用With语句操作文本框**: - 通过`.SelStart = Len(.Text)`将光标定位到文本框内容的...

    LabVIEW删除字符串中空格

    本篇将详细讲解如何在LabVIEW中删除字符串中的空格以及计算字符长度。 在LabVIEW中,字符串通常以文本框(String Control)或字符串常量(String Constant)的形式存在。当你需要对字符串进行操作,如删除空格,...

    C#实现读取字符串特定位置数据

    本篇文章将深入探讨如何在C#环境中使用正则表达式来读取字符串中指定位置后面的文本内容。 首先,我们需要了解C#中处理正则表达式的`System.Text.RegularExpressions`命名空间。在这个命名空间下,`Regex`类是主要...

    文本框按照要求布局安放(在指定字符串中的某些位置安放文本框)

    它允许开发者在指定的字符串或句子中插入文本框,以便用户能直接在这些位置填写答案,提供了一个直观且互动的学习体验。 首先,我们需要理解这个功能的核心原理。在编程中,我们通常会使用一种叫做“富文本”(Rich...

    C语言二进制字符串与十六进制字符串相互转化

    具体实现时,可以定义一个成员函数如`OnConvertButtonClicked`,在此函数中,提取输入文本框的字符串,进行转换,然后将结果填充到输出文本框。MFC提供了丰富的控件和消息机制,使得开发过程更加便捷。 在实际应用...

    C#上位机基础学习-基于S7.Net实现读取S7-1500PLC中的字符串变量.docx

    4. 在C#中处理字符串数据,包括读取、去除多余字符等。 5. 使用S7Client对象的ReadBytes方法进行数据读取。 6. 对象初始化和事件驱动编程。 了解并掌握这些知识点,对于进行C#上位机与S7-1500PLC的通信开发是非常...

    CVI串口字符串16进制转换

    这通常涉及到使用`sprintf`函数,指定格式化字符串`%X`或`%hx`来生成16进制表示。 3. **拼接16进制字符串**:将所有16进制字符串连接起来,形成一个完整的16进制表示的字符串。可以使用CVI的字符串操作函数,如`...

    C#中怎样从指定字符串中查找并替换字符串?

    首先,C#提供了`System.String`类,它包含许多方法来处理字符串,包括查找和替换。例如,我们可以使用`String.Contains()`来检查字符串是否包含特定子字符串,`String.IndexOf()`来获取子字符串首次出现的位置,以及...

    python 读取txt 批量修改指定指定字符串

    # 2.1创建标签和单行文本框,包含2个标签和2个单行文本框 # 2.2创建按钮和按钮对应函数 注意: 由于python读取格式的问题,不管用界面直接运行还是修改后用函数运行,复制的文件地址的时候需要将‘\’改为‘/’。 ...

    POINTERS ON C 第九章编程练习16按照指定的格式字符串对一个数字字符进行格式化

    在本练习中,你需要编写一个程序,该程序接收一个数字和一个格式字符串作为输入,然后根据指定的格式打印该数字。这可能涉及以下步骤: 1. **用户输入**:首先,你需要使用`scanf`或`fgets`函数从用户那里获取输入...

    字符串按特定字符拆分

    这里,我们聚焦于“字符串按特定字符拆分”的主题,探讨如何在C#环境下,特别是在Winform应用中,使用指定的分隔符对字符串进行拆分。 C#中的`Split()`方法是实现这一功能的关键。这个方法位于`System.String`类中...

    winform的字符串转换乱码解决

    在Windows Forms(Winform)应用开发中,遇到字符串转换出现乱码的问题是非常常见的。这通常涉及到字符编码的不一致或不正确处理。本篇将详细解释这个问题的原因,并提供解决方案。 一、乱码产生的原因 1. 文件...

    循环查找文本中所有指定的一个字符串 VB源码

    在VB(Visual Basic)编程环境中,循环查找文本中所有指定字符串是一项常见的任务,这通常涉及到字符串处理和控制结构。在给定的标题和描述中,我们可以推断这是一个使用VB编写的程序,它能够遍历文本并查找指定的...

    Android源码:文本框可输入字符数量源码

    在布局文件中,可以使用`android:maxLength`属性直接指定EditText的最大字符数。然而,这种方法仅适用于不需动态更改限制的情况。 ```xml android:id="@+id/limited_edit_text" android:layout_width="match_...

    张志晨VB实例教程之字符串转换成变量名

    假设你有一个界面,其中包含多个复选框和一个按钮,你的目标是根据用户选择哪些复选框,动态地拼接字符串。具体来说,假设有三个复选框`Check1`、`Check2`和`Check3`,每个复选框对应一个字符串`str1`、`str2`和`str...

    向图片中写入字符串并显示图片(C#)

    ### 向图片中写入字符串并显示图片(C#) 在C#编程中,有时我们需要将文本添加到图像中,这可能是因为要在图像上添加注释、水印或任何其他文字信息。本文将详细介绍如何实现这一功能,包括创建新图像、在图像上绘制...

Global site tag (gtag.js) - Google Analytics