天书的博客
C++博客
首页
新文章
新随笔
聚合
管理
posts - 124, comments - 29, trackbacks - 0
C# 多行textbox 按回车键提取光标所在行字符串且在最上面一行显示,光标回归第一行
1
private
void
GetLine(TextBox txtCmdInput)
//
取控件里鼠标所在行的命令发送后提到最前
2
{
3
//
取光标所在行的字符串包括末尾的换行回车符"\r\n"
4
string
strCmdText
=
txtCmdInput.Text;
5
int
curInx
=
txtCmdInput.SelectionStart;
//
光标所在位置索引
6
string
tmp
=
strCmdText.Substring(
0
, curInx);
//
开始到光标处的子串
7
int
start
=
tmp.LastIndexOf(
'
\n
'
);
//
找光标所在行的开头索引start + 1
8
9
tmp
=
strCmdText.Substring(curInx);
//
当前光标所在位置到最后的子串
10
int
end
=
tmp.IndexOf(
'
\n
'
);
//
找该行的末尾索引包括"\r\n"
11
string
curRowText
=
null
;
12
if
(end
>
0
)
13
{
14
curRowText
=
strCmdText.Substring(start
+
1
, curInx
-
start
+
end);
15
}
16
else
17
{
18
curRowText
=
strCmdText.Substring(start
+
1
);
19
}
20
//
把光标所在行的命令提到第一行的下一行
21
String strLeft
=
strCmdText.Remove(start
+
1
, curRowText.Length);
22
23
//
处理剩下的字符串,注意把开头结尾的"\r\n"找到删掉
24
if
(strLeft
!=
""
)
25
{
26
while
(strLeft[strLeft.Length
-
1
]
==
'
\r
'
||
strLeft[strLeft.Length
-
1
]
==
'
\n
'
)
27
{
28
strLeft
=
strLeft.Remove(strLeft.Length
-
1
,
1
);
29
}
30
}
31
if
(strLeft
!=
""
)
32
{
33
while
(strLeft[
0
]
==
'
\r
'
)
34
{
35
strLeft
=
strLeft.Remove(
0
,
2
);
36
}
37
}
38
//
处理你取出的当前行的字符串若有"\r\n"注意把它去掉
39
if
(curRowText
!=
""
&&
curRowText.Length
>
0
)
40
{
41
while
(curRowText[curRowText.Length
-
1
]
==
'
\r
'
||
curRowText[curRowText.Length
-
1
]
==
'
\n
'
)
42
{
43
curRowText
=
curRowText.Remove(curRowText.Length
-
1
,
1
);
44
}
45
}
46
String strNew
=
curRowText
+
"
\r\n
"
+
strLeft;
47
//
最后前面留一行空格且把鼠标定位到此
48
txtCmdInput.Text
=
"
\r\n
"
+
strNew;
49
}
接着引发textbox控件的KeyDown事件
private void txtCmdInput_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
//发送光标所在行指令,且把它提到头一行
GetLine(txtCmdInput);
e.SuppressKeyPress = true;//回车事件已经处理完不再响应了
}
}
posted on 2008-09-03 15:09
天书
阅读(4889)
评论(3)
编辑
收藏
引用
FeedBack:
#
re: C# 多行textbox 按回车键提取光标所在行字符串且在最上面一行显示,光标回归第一行
2009-02-27 13:59 |
斯比克
学习~~
回复
更多评论
#
re: C# 多行textbox 按回车键提取光标所在行字符串且在最上面一行显示,光标回归第一行
2009-02-27 14:01 |
斯比克
呵呵,虽然不是我需要的效果..但是给我提供了思路...3Q...
回复
更多评论
#
re: C# 多行textbox 按回车键提取光标所在行字符串且在最上面一行显示,光标回归第一行
2009-10-09 18:02 |
我们学习网
按回车光标转向下一控件。
回复
更多评论
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2009年2月
>
日
一
二
三
四
五
六
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
2013年11月 (2)
2013年10月 (2)
2013年4月 (1)
2010年12月 (1)
2010年11月 (1)
2010年10月 (2)
2010年8月 (1)
2010年6月 (2)
2010年5月 (3)
2010年4月 (4)
2010年3月 (1)
2010年2月 (4)
2010年1月 (4)
2009年11月 (1)
2009年9月 (2)
2009年7月 (1)
2009年6月 (1)
2009年4月 (1)
2009年2月 (9)
2008年12月 (2)
2008年11月 (6)
2008年10月 (15)
2008年9月 (29)
2008年6月 (17)
2008年5月 (3)
2008年4月 (6)
2008年3月 (3)
文章分类
Direct3D(1)
文章档案
2013年4月 (1)
2008年6月 (1)
2008年3月 (1)
好友的Bolg
韩全磊的技术Blog
搜索
最新评论
1. re: 插件化开发——接口和反射[未登录]
评论内容较长,点击标题查看
--x
2. re: 触发器作用 一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行
thank you
--enen
3. re: C#属性解析——综合“公有字段的简单而直接的表达式"和get和set函数提供的控制权"而产生的
很详细
--www
4. re: C# winform DevExpress GridControl GridView大批量数据(20万条)导出Excel[未登录]
导出的数据打不开啊,不是EXCEL啊
--李
5. re: C# textbox 属性 TabStop 控制输入焦点
sdfs
--78
阅读排行榜
1. DateTimePicker 控件的格式设置 CustomFormat yyyy-MM-dd HH:mm:ss 月大写M,分钟小写m,小时H代表24小时计算,h代表12小时计算(20768)
2. DevExpress.XtraCharts 使用心得(9910)
3. c# 中treeview 树节点图标的动态加载,及选中时图标改变(7805)
4. C# winform DevExpress GridControl GridView大批量数据(20万条)导出Excel(7440)
5. DevExpress TreeList 调优_绑定数据源方式, 放弃原来的AppendNode加载数据的方式(6731)
评论排行榜
1. D3D中镜面反射效果实现(3)
2. C# 多行textbox 按回车键提取光标所在行字符串且在最上面一行显示,光标回归第一行(3)
3. c# 圆形按钮制作——Region属性(3)
4. C# textbox 属性 TabStop 控制输入焦点(2)
5. C# 抽象方法Abstract 和 虚方法Virtual(1)