C#窗体程序:求将字符串插入textBox光标所在位置的代码

时间:2022-02-02 08:05:40
我想在textBox控件光标所在位置插入字符,就像一般的文件编辑软件一样,光标到哪里文本就可以插到哪里。
例如:textBox控件有文本“我爱祖国”。
如果光标在“爱”字后头,在某一单击事件(如按钮的Click事件)中插入“我的”字符串,文本就变成“我爱我的祖国”。
求代码!
成功后100分立即相送!在线等待!

22 个解决方案

#1


好象是:
this.textbox1.selectedTEXT="我的"

#2


string str1,str2;
str1 = this.textBox1.Text.Substring(0,this.textBox1.SelectionStart);
str2 = this.textBox1.Text.Substring(this.textBox1.SelectionStart,this.textBox1.Text.Length - this.textBox1.SelectionStart);
this.textBox1.Text = str1 + "我爱" + str2;

#3


private void button1_Click(object sender, System.EventArgs e)
{
int i = this.textBox1.SelectionStart;
string s = this.textBox1.Text;
s = s.Insert(i,"xx");
this.textBox1.Text = s;
}

#4


直接用string的insert好了

#5


brightheroes(闭关|那一剑的风情)
的代码清晰简洁

#6


用insert吧

#7


各位前辈的代码都能实现,但如果是richTextBox又该如何解决呢?

#8


我有一段代码是求光标在richTextBox中位置的
Point P=new Point(0); 
GetCaretPos(ref P); 
int Pos=this.richTextBox1.GetCharIndexFromPosition(P); 
this.Y=this.richTextBox1.GetLineFromCharIndex(Pos); 

if (this.Y>0) 

int offset=1; 
while(this.richTextBox1.Text[Pos-offset]!='\n') 
offset++; 
this.X=offset; 
this.Y++; 

else 

this.X=Pos+1; 
this.Y=1; 


MessageBox.Show("当前位置: 第"+this.Y.ToString()+"行 "+"第"+this.X.ToString()+"列"); 
以上代码可以将光标位置求出来。
请问插入字符串的方法名是什么?

#9


一样的呀
richTextBox也有这个属性 SelectionStart
private void button1_Click(object sender, System.EventArgs e)
{
int i = this.richTextBox1.SelectionStart;
string s = this.richTextBox1.Text;
s = s.Insert(i,"xx");
this.richTextBox1.Text = s;
}

#10


up

#11


#12


前辈,richTextBox1没有selectionstart属性

#13


http://community.csdn.net/Expert/topic/3521/3521267.xml?temp=.5164759

Maybe this can help u !:P

<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

#14


webform.......
倒,我还以为winform
呵呵

#15


richTextBox1.ScrollToCaret();
richTextBox1.insert

#16


to:herony420
===========================================================
richTextBox1.insert的第一个参数int startindex你是怎么取得的?

to:闭关|那一剑的风情
==============================
前辈,我就是在winform下

#17


为什么我一给分的时候老是弹出“回复次数大于给分次数?”

#18


我爱你,Java!你爱我吗?

#19


败了,给不了分怎么回事?CSDN有问题吗?我要结贴!!!

#20


当你结帖的时候有人回复了,就不能正常结帖了,会提示“回复次数大于给分次数?”
,如果出现这种情况你可以重新结帖就要以了:)

#21


如果出现这种情况你可以重新结帖就可以了,呵呵......

#22


private void button1_Click(object sender, System.EventArgs e)
{
int i = this.textBox1.SelectionStart;
string s = this.textBox1.Text;
s = s.Insert(i,"xx");
this.textBox1.Text = s;
}

#1


好象是:
this.textbox1.selectedTEXT="我的"

#2


string str1,str2;
str1 = this.textBox1.Text.Substring(0,this.textBox1.SelectionStart);
str2 = this.textBox1.Text.Substring(this.textBox1.SelectionStart,this.textBox1.Text.Length - this.textBox1.SelectionStart);
this.textBox1.Text = str1 + "我爱" + str2;

#3


private void button1_Click(object sender, System.EventArgs e)
{
int i = this.textBox1.SelectionStart;
string s = this.textBox1.Text;
s = s.Insert(i,"xx");
this.textBox1.Text = s;
}

#4


直接用string的insert好了

#5


brightheroes(闭关|那一剑的风情)
的代码清晰简洁

#6


用insert吧

#7


各位前辈的代码都能实现,但如果是richTextBox又该如何解决呢?

#8


我有一段代码是求光标在richTextBox中位置的
Point P=new Point(0); 
GetCaretPos(ref P); 
int Pos=this.richTextBox1.GetCharIndexFromPosition(P); 
this.Y=this.richTextBox1.GetLineFromCharIndex(Pos); 

if (this.Y>0) 

int offset=1; 
while(this.richTextBox1.Text[Pos-offset]!='\n') 
offset++; 
this.X=offset; 
this.Y++; 

else 

this.X=Pos+1; 
this.Y=1; 


MessageBox.Show("当前位置: 第"+this.Y.ToString()+"行 "+"第"+this.X.ToString()+"列"); 
以上代码可以将光标位置求出来。
请问插入字符串的方法名是什么?

#9


一样的呀
richTextBox也有这个属性 SelectionStart
private void button1_Click(object sender, System.EventArgs e)
{
int i = this.richTextBox1.SelectionStart;
string s = this.richTextBox1.Text;
s = s.Insert(i,"xx");
this.richTextBox1.Text = s;
}

#10


up

#11


#12


前辈,richTextBox1没有selectionstart属性

#13


http://community.csdn.net/Expert/topic/3521/3521267.xml?temp=.5164759

Maybe this can help u !:P

<script language="javascript">
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value="123" onfocus="cc()">

#14


webform.......
倒,我还以为winform
呵呵

#15


richTextBox1.ScrollToCaret();
richTextBox1.insert

#16


to:herony420
===========================================================
richTextBox1.insert的第一个参数int startindex你是怎么取得的?

to:闭关|那一剑的风情
==============================
前辈,我就是在winform下

#17


为什么我一给分的时候老是弹出“回复次数大于给分次数?”

#18


我爱你,Java!你爱我吗?

#19


败了,给不了分怎么回事?CSDN有问题吗?我要结贴!!!

#20


当你结帖的时候有人回复了,就不能正常结帖了,会提示“回复次数大于给分次数?”
,如果出现这种情况你可以重新结帖就要以了:)

#21


如果出现这种情况你可以重新结帖就可以了,呵呵......

#22


private void button1_Click(object sender, System.EventArgs e)
{
int i = this.textBox1.SelectionStart;
string s = this.textBox1.Text;
s = s.Insert(i,"xx");
this.textBox1.Text = s;
}