1
private void MoveCmdToLast(TextBox txtCmdInput, String selCmd)//把所选中的命令移动到最下一行然后显示在文本框中
2
{
3
String txtStr = txtCmdInput.Text;
4
int start = txtStr.IndexOf(selCmd);
5![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
6
//把选中行或光标所在行的命令送到最后一行且光标移到第一行
7
if (selCmd != null && selCmd.Length > 0 && selCmd != "\r\n")
8
{
9
String strLeft = txtStr.Remove(start, selCmd.Length);
10![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
11
//处理剩下的字符串,注意把开头结尾的"\r\n"找到删掉
12![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
13
while (strLeft != null && strLeft.Length > 0 && (strLeft[strLeft.Length - 1] == '\r' || strLeft[strLeft.Length - 1] == '\n'))
14
{
15
strLeft = strLeft.Remove(strLeft.Length - 1, 1);
16
}
17![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
18
while (strLeft != null && strLeft.Length > 0 && strLeft[0] == '\r')
19
{
20
strLeft = strLeft.Remove(0, 2);
21
}
22![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
23
//处理你取出的当前行的字符串若有"\r\n"注意把它去掉
24
while (selCmd != "" && selCmd.Length > 0 &&
25
(selCmd[selCmd.Length - 1] == '\r'
26
|| selCmd[selCmd.Length - 1] == '\n'))
27
{
28
selCmd = selCmd.Remove(selCmd.Length - 1, 1);
29
}
30![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
31
String strNew = strLeft + "\r\n" + selCmd;
32
//最后前面留一行空格且把鼠标定位到此
33
txtCmdInput.Text = "\r\n" + strNew;
34
}
35
else
36
{
37
MessageBox.Show("请您不要发送空命令,谢谢合作!", "温馨提示:");
38
}
39
}
40
private String GetCmd(TextBox txtCmdInput)//取控件里鼠标所在行或光标所选择的命令,发送的命令暂时写到文件中
41
{
42
string txtStr = txtCmdInput.Text;
43
string selStr = txtCmdInput.SelectedText;
44
string selCmd = null;
45
int start = 0;
46
if (selStr != null && selStr.Length > 0)
47
{
48![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
49
int selBegin = txtStr.IndexOf(selStr);
50
int selEnd = selBegin + selStr.Length - 1;
51
string subPreStr = txtStr.Substring(0, selBegin);
52
string subLastStr = txtStr.Substring(selEnd + 1);
53
string preleft = null;
54
string lastleft = null;
55
if (subPreStr.Length > 0 && subPreStr[subPreStr.Length - 1] != '\n')
56
{
57
int nindex = subPreStr.LastIndexOf("\n");
58
preleft = subPreStr.Substring(nindex + 1);
59
}
60
if (subLastStr.Length > 0 && subLastStr[0] != '\r')
61
{
62
int rindex = subLastStr.IndexOf("\r");
63
if (rindex != -1)
64
{
65
lastleft = subLastStr.Substring(0, rindex + 2);
66
}
67
else lastleft = null;
68
}
69
else if (subLastStr != null && subLastStr.Length > 0 && subLastStr[0] == '\r')
70
{
71
lastleft = "\r\n";
72
}
73
selStr = preleft + selStr + lastleft;
74
start = txtStr.IndexOf(selStr);
75
selCmd = selStr;
76
}
77
else
78
{
79
//取光标所在行的字符串包括末尾的换行回车符"\r\n"
80
//string strCmdText = txtCmdInput.Text;
81
int curInx = txtCmdInput.SelectionStart; //光标所在位置索引
82
string tmp = txtStr.Substring(0, curInx); //开始到光标处的子串
83
int n = tmp.LastIndexOf('\n'); //找光标所在行的开头索引start + 1
84
start = n + 1;
85
tmp = txtStr.Substring(curInx);//当前光标所在位置到最后的子串
86
int end = tmp.IndexOf('\n'); //找该行的末尾索引包括"\r\n"
87
string curRowText = null;
88
if (end > 0)
89
{
90
curRowText = txtStr.Substring(start, curInx - start + end + 1);
91
}
92
else
93
{
94
curRowText = txtStr.Substring(start);
95
}
96
selCmd = curRowText;
97
}
98
//MoveCmdToLast(txtStr,selCmd);
99
//把光标所在行的命令写入文件中
100
FileStream fs = new FileStream("D:\\file.txt",FileMode.Append,FileAccess.Write);
101
StreamWriter sw = new StreamWriter(fs);
102
sw.Flush();
103
sw.Write(selCmd);
104
sw.Flush();
105
sw.Close();
106
return selCmd;
107
}
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
2
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
4
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
5
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
6
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
7
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
8
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
10
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
11
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
12
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
13
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
14
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
16
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
18
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
19
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
21
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
23
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
24
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
25
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
26
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
27
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
28
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
29
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
30
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
31
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
32
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
33
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
34
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
36
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
37
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
38
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
39
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
40
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
41
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
42
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
43
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
44
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
45
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
46
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
47
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
48
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
49
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
50
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
51
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
52
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
53
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
54
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
55
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
56
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
58
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
59
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
61
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
63
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
64
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
65
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
66
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
67
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
68
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
70
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
71
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
72
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
74
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
75
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
76
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
77
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
78
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
79
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
80
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
81
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
82
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
83
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
84
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
85
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
86
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
87
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
88
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
89
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
90
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
91
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
92
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
93
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
94
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
95
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
96
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
97
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
98
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
99
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
100
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
101
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
102
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
103
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
104
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
105
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
106
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
107
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
函数调用如下:
private void txtCmdInput_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
e.SuppressKeyPress = true; / /回车事件已经处理完不再响应了
string str = GetCmd(txtCmdInput);
MoveCmdToLast(txtCmdInput, str);
}
}