如何让文本框里的某一行高亮显示

ccbbcc 2018-10-25 04:06:50
请问高手,如何让文本框里的某一行高亮显示?谢谢
...全文
407 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
无·法 2018-10-26
  • 打赏
  • 举报
回复
如果只需要选择当前点击的行只要一行代码就可以了。
Private Sub CodeMax1_MouseUp(ByVal Button As CodeMax4Ctl.cmMouseBtn, ByVal Modifiers As CodeMax4Ctl.cmKeyMod, ByVal X As Long, ByVal Y As Long)
CodeMax1.SelectLine CodeMax1.GetSel(False).EndLineNo, True
End Sub
无·法 2018-10-26
  • 打赏
  • 举报
回复
楼主,建议你得用专门控件CodeMax,文字前景色和背景色都可以自由设置


Option Explicit

Dim lngLastLine As Long

Private Sub Form_Load()
CodeMax1.SetColor cmClrLeftMargin, &H808080
CodeMax1.SetColor cmClrLineNumberBk, &H808080

CodeMax1.AddText "test" & vbCrLf
CodeMax1.AddText "fdsafffffffffffffasdgf" & vbCrLf
CodeMax1.AddText "111111111111" & vbCrLf
CodeMax1.AddText "234234" & vbCrLf
CodeMax1.AddText "fdsfas" & vbCrLf
End Sub

Private Sub CodeMax1_MouseUp(ByVal Button As CodeMax4Ctl.cmMouseBtn, ByVal Modifiers As CodeMax4Ctl.cmKeyMod, ByVal X As Long, ByVal Y As Long)
Dim r As New CodeMax4Ctl.Range
Set r = CodeMax1.GetSel(False)
CodeMax1.SetLineColor lngLastLine, vbWhite
CodeMax1.SetLineColor r.EndLineNo, vbBlue
lngLastLine = r.EndLineNo
End Sub

下载地址:https://download.csdn.net/download/sysdzw/1275316
脆皮大雪糕 2018-10-26
  • 打赏
  • 举报
回复

Option Explicit

Private Sub Form_Load()
Text1.Text = ""
Text1.Text = Text1.Text & "这是一个" & vbCrLf
Text1.Text = Text1.Text & "测试用的" & vbCrLf
Text1.Text = Text1.Text & "好几行的 " & vbCrLf
Text1.Text = Text1.Text & "字符串 " & vbCrLf
Text1.Text = Text1.Text & "用来做测试" & vbCrLf

selectline (1)
End Sub



Private Sub selectline(intNum As Integer)
Dim i As Integer
Dim lngStart As Long, lngEnd As Long
lngStart = 0
For i = 1 To intNum - 1
lngStart = InStr(lngStart + 1, Text1.Text, vbCrLf)
Next
lngEnd = InStr(lngStart + 1, Text1.Text, vbCrLf)
Text1.SelStart = lngStart
Text1.SelLength = lngEnd - lngStart
End Sub
ccbbcc 2018-10-26
  • 打赏
  • 举报
回复
谢谢脆皮大雪糕,可是这两个方法我试了,都不行
脆皮大雪糕 2018-10-26
  • 打赏
  • 举报
回复
觉得你的需求应该是使用listbox控件
脆皮大雪糕 2018-10-26
  • 打赏
  • 举报
回复
再给你一个高亮任一行的方法吧
调用 selectlin(1) 就选择第一行了


Private Sub selectline(intNum As Integer)
Dim i As Integer
Dim lngStart As Long, lngEnd As Long
lngStart = 0
For i = 1 To intNum - 1
lngStart = InStr(lngStart + 1, Text1.Text, vbCrLf)
Next
lngEnd = InStr(lngStart + 1, Text1.Text, vbCrLf)
Text1.SelStart = lngStart
Text1.SelLength = lngEnd - lngStart
End Sub
of123 2018-10-26
  • 打赏
  • 举报
回复
引用 7 楼 chenbingjy 的回复:
谢谢!可以了,现在文本框点击哪行哪行就高亮显示。
我看不懂代码,不知道怎么改。我还想窗体一加载就第一行高亮。
大神再指点一下。
    Text1.SelStart = 0
Text1.SelLength = InStr(1, Text1.Text, vbCrLf) - 1
ccbbcc 2018-10-26
  • 打赏
  • 举报
回复
谢谢!可以了,现在文本框点击哪行哪行就高亮显示。
我看不懂代码,不知道怎么改。我还想窗体一加载就第一行高亮。
大神再指点一下。
舉杯邀明月 2018-10-25
  • 打赏
  • 举报
回复
大雪糕的方法不错啊。
利用 SelStart属性,就不需要API了。
我一开始就没想到这个属性(几乎没使用它啊,都把它“遗忘”了 
 就“顺势”的想到用API了……


参考楼上 大雪糕 的思路,把Click( ) 事件过程改成这样就行了:
Private Sub Text1_Click()
Dim lngStart As Long, lngEnd As Long
Dim i As Integer

i = Text1.SelStart
lngStart = InStrRev(Text1.Text, vbLf, i)
lngEnd = InStr(1& + i, Text1.Text, vbLf)
If (0& = lngEnd) Then
lngEnd = Len(Text1.Text)
Else
lngEnd = lngEnd - 2&
End If
Text1.SelStart = lngStart
Text1.SelLength = lngEnd - lngStart
End Sub

这样,不管最后那一行是否换行、或者结尾几个空白行,都“效果正常”。
脆皮大雪糕 2018-10-25
  • 打赏
  • 举报
回复
试试看,点到最后一行会报错,自己看怎么控制边界吧,懒得改了
脆皮大雪糕 2018-10-25
  • 打赏
  • 举报
回复

Option Explicit

Private Sub Form_Load()
Text1.Text = ""
Text1.Text = Text1.Text & "这是一个" & vbCrLf
Text1.Text = Text1.Text & "测试用的" & vbCrLf
Text1.Text = Text1.Text & "好几行的 " & vbCrLf
Text1.Text = Text1.Text & "字符串 " & vbCrLf
Text1.Text = Text1.Text & "用来做测试" & vbCrLf
End Sub

Private Sub Text1_Click()
Dim i As Integer
Dim lngStart As Long, lngEnd As Long
lngStart = Text1.SelStart
lngEnd = InStr(lngStart + 1, Text1.Text, vbCrLf)
For i = lngStart To 1 Step -1
If Mid(Text1.Text, i, 2) = vbCrLf Then
lngStart = i + 1
Exit For
End If
lngStart = 0
Next
Text1.SelStart = lngStart
Text1.SelLength = lngEnd - lngStart
End Sub
舉杯邀明月 2018-10-25
  • 打赏
  • 举报
回复
如果是“选定”效果的话,可以用API,获取“光标”所在的行、该行从哪个字符起始、哪个字符结束。
然后,就是用代码设置textBox的“选定范围”就行了。

ccbbcc 2018-10-25
  • 打赏
  • 举报
回复
谢谢!我没表达清楚。
我的意思,文本框显示多行文字。
鼠标点击哪行,哪行就高亮显示。
脆皮大雪糕 2018-10-25
  • 打赏
  • 举报
回复

Option Explicit

Private Sub Form_Load()
Text1.Text = "这是一个测试用的字符串显示在文本框里"
Text1.SelStart = 4 '从第4个后面开始
Text1.SelLength = 7 '选7个字符
End Sub



修改 姚乔锋 yaoqiaofeng@sohu.com修改的地方: 1.高亮当前行的方式,在自动换行的情况也只高亮一行 2.增强高亮当前的功能,可以选择于行号区显示指示器,可以选择当前行背景与前景 3.当行间距大于零时,原本文本会显示于靠上,现修改于垂直中间对齐 4.可以选择显示行间分隔线,增加可选择线的类型 5.当SynEdit位于MDI中的当前子窗口时,若是焦点转回到主窗口中某个控件后再转回来时会不能显示光标 6.当SynEdit第一列显示的字符是双字节字符的第二个字节时,在高亮当前行情况下会把第一个字节显示在行号区上 7.修改了DoCaseChange, 加快转换字母大小写的处理速度和精简代码,也避免出现一些双字节字符的丢失 8.对画右边线轻微修改,避免有时右边线颜色显示出错 9.修改了属性TEXT, 修正以前改变TEXT后不能UNDO的特性 10.(new) 增加可指定换行类型和换行列,但不能保证没有BUG 11.还有什么BUG请向我说声,谢谢!修改日期于2005.5.15----------以下为TCustomSynEdit类新增的属性---------- TCustomSynEdit = class property ActiveLine : TSynActiveLine; property Background: TColor; property Foreground: TColor; property Indicator : TSynGlyph; property Visible: boolean; property LineDivider : TSynLineDivider; property Visible : Boolean; property Color : TColor; property Style : TPenStyle; property RightEdge : TSynRightEdge; property Visible : Boolean; property Position : Integer; property Color : TColor; property Style : TPenStyle; property LineSpacing : integer; property LineSpacingRule : TLineSpacingRule; property BlockIndent : integer; property WordWrap : TSynWordWrap; property Enabled : Boolean; property Position : Integer; property Style : TSynWordWrapStyle; property Indicator : TSynGlyph; end;----------注:在修改增加自动换行的类型和可指定位置换行时,我遇到很多的困难,不论怎么修改总是存在BUG,于是就有一段时间跑去玩游戏,自到这几天重新研究代码时才把自动换行的那些BUG去掉,所以这个版本发布隔了比较久.
2012-11-21 1.0.0.0 -------------------- 01.在列表上面的文本框中,输入你想要搜索的文字,按下回车,将会从网上搜索歌曲 02.列表中如果是搜索出来的网络歌曲,将会自动在线试听,并且自动下载到本地 03.右下角的“…”按钮可以修改媒体所在的目录,默认是当前程序所在的 Music目录 04.歌曲自动按歌手分不同的目录保存 05.打开程序后,不会主动加载本地的歌曲,请手动点一下,媒体库 06.在歌曲列表中,右键,可以看到两个选项: 浏览文件:打开歌曲所在的位置,网络歌曲会弹出错误提示 物理删除:从本地删除歌曲 07.歌词未保存在本地,每次从网上临时搜索的,后期版本会改进 08.歌词不是卡拉OK方式,只是高亮了当前行 09.目前只支持从“搜狗音乐”上获取歌曲,敬请期待更多的搜索引擎 10.托盘菜单:下载列表,可以看到当前正在下载的歌曲,已经下载的不显示在这。 11.托盘菜单:导出媒体库,目前只支持moto e6的导出,如果有需要请联系我 12.由于保护处理上有点问题,本次版本,可能将在 2012-12-05 之后无法使用,请联系我 13.程序启动后,自动设置为开机启动,暂时不可以取消,请谅解 14.本程序无其它联网行为,无其它操作行为,放心使用 15.需要 .net framework 2.0/4.0 任选一,WIN7用户默认就有2.0

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧