苏州三木软件科技有限公司

 找回密码
 立即注册
搜索
热搜: 活动
查看: 1003|回复: 1

【求助】SmTextBox的插入代码

[复制链接]

21

主题

35

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2023-6-2 08:57:08 | 显示全部楼层 |阅读模式


SmTextBox控件如何在鼠标位置用代码插入字符,并且鼠标在SmTextBox控件插入之后的位置

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

25

主题

313

帖子

2077

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2077
QQ
发表于 2023-6-2 11:32:22 | 显示全部楼层
主要利用SmTextBox控件的SelectedText、SelectionStart和SelectionLength三个属性。正常在编辑状态下,这三个属性可能很正常,但是一旦SmTextBox控件失去焦点,比如点击某个命令按钮,或者切换到其他控件时,这三个属性的值会丢失。所以我们想正常处理就需要在控件的Leave事件中保存SelectionStart和SelectionLength这两个属性的值,最后在赋值插入字符时再使用。
  1. Public Class Formb01bb1712f52406cafdb5e9413171eac
  2.                 Inherits FormEventsBase
  3.                
  4.                 Private btnWhere As SmButton
  5.                 Private btnFrom As SmButton
  6.                 Private btnSelect As SmButton
  7.                 Private SmLabel1 As SmLabel
  8.                 Private SmTextBox1 As SmTextBox
  9.                 Public Sub TextBox插入文本_Load(sender As Object,e As  System.EventArgs)
  10.                         btnWhere=Me.SmForm.ControlDictionary()("btnWhere")
  11.                         btnFrom=Me.SmForm.ControlDictionary()("btnFrom")
  12.                         btnSelect=Me.SmForm.ControlDictionary()("btnSelect")
  13.                         SmLabel1=Me.SmForm.ControlDictionary()("SmLabel1")
  14.                         SmTextBox1=Me.SmForm.ControlDictionary()("SmTextBox1")
  15.                         
  16.                 End Sub
  17.                
  18.                 Public Sub btnSelect_Click(sender As Object,e As  System.EventArgs)
  19.                         Dim btn As SmButton=sender
  20.                         '为了让插入文本有可持续性,我们需要先激活SmTextBox控件
  21.                         SmTextBox1.Select
  22.                         '先将选择起始位和选择长度赋值,这样就可以恢复TextBox的选择状态
  23.                         SmTextBox1.SelectionStart=_SelectionStart
  24.                         SmTextBox1.SelectionLength=_SelectionLength
  25.                         '替换相应的选择文本。什么都没有选择的时候就会插入
  26.                         SmTextBox1.SelectedText=btn.Text
  27.                         
  28.                 End Sub
  29.                 '定义两个私有字段,用来存储因为控件离开时TextBox的选择状态丢失的问题。
  30.                 Private _SelectionStart As Integer=0
  31.                 Private _SelectionLength As Integer=0
  32.                 Public Sub SmTextBox1_Leave(sender As Object,e As  System.EventArgs)
  33.                         '将TextBox控件的选择状态记录下来
  34.                         _SelectionStart=SmTextBox1.SelectionStart
  35.                         _SelectionLength=SmTextBox1.SelectionLength
  36.                 End Sub
  37.                
  38.         End Class
复制代码

附件是窗体文件,可以导入试试效果。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|苏州三木软件科技有限公司 ( 苏ICP备2022038390号 )

苏公网安备 32058502010732号

GMT+8, 2024-10-2 23:31 , Processed in 0.058344 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表