如何获得文本框中选定的字符串

xxxxxxxiexiaoshuai 2013-04-07 02:41:30
如图,当我选定文本框中部分字符串时可以复制或粘贴选定部分的字符串,首先设置文本框只能输入数字(和银行取款时只能输入数字一样的道理),所用代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsNumber(e.KeyChar) && e.KeyChar != 8)
{
e.Handled = true;
}
}
然后就是获取文本框中指定的字符串了:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
{
Clipboard.SetDataObject(this.textBox1.Text, true);
}
if (e.Control && e.KeyCode == Keys.X)
{
Clipboard.SetDataObject(this.textBox1.Text, true);
textBox1.Text = "";
}
if (e.Control && e.KeyCode == Keys.V)
{
IDataObject iData = Clipboard.GetDataObject();
if (iData.GetDataPresent(DataFormats.Text))
{
string b = (String)iData.GetData(DataFormats.Text);
textBox1.Text = b;
}
}

}
但这样只能获得这个文本框中所有的字符串,所以怎么能获得文本框中选定的字符串呢?分不多,只能给这么多了
...全文
306 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xxxxxxxiexiaoshuai 2013-04-08
  • 打赏
  • 举报
回复
引用 7 楼 xxxxxxxiexiaoshuai 的回复:
根据上面提示我把textBox1_KeyDown事件修改为如下: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.C) { ……
汗,搞错了: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.C) { Clipboard.SetDataObject(this.textBox1.SelectedText, true); } if (e.Control && e.KeyCode == Keys.X) { Clipboard.SetDataObject(this.textBox1.SelectedText, true); textBox1.Text =textBox1.Text.Substring(0,textBox1.SelectionStart)+textBox1.Text.Substring(textBox1.SelectionStart+textBox1.SelectedText.Length); } if (e.Control && e.KeyCode == Keys.V) { IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text)) { string b = (String)iData.GetData(DataFormats.Text); textBox1.Text = textBox1.Text.Substring(0, textBox1.SelectionStart) +b+ textBox1.Text.Substring(textBox1.SelectionStart + textBox1.SelectedText.Length); } } }
xxxxxxxiexiaoshuai 2013-04-08
  • 打赏
  • 举报
回复
根据上面提示我把textBox1_KeyDown事件修改为如下: private void textBox1_KeyDown(object sender, KeyEventArgs e) { if (e.Control && e.KeyCode == Keys.C) { Clipboard.SetDataObject(this.textBox1.SelectedText, true); } if (e.Control && e.KeyCode == Keys.X) { Clipboard.SetDataObject(this.textBox1.SelectedText, true); textBox1.Text = textBox1.Text.Substring(0,(textBox1.Text.Length-textBox1.SelectedText.Length)); } if (e.Control && e.KeyCode == Keys.V) { IDataObject iData = Clipboard.GetDataObject(); if (iData.GetDataPresent(DataFormats.Text)) { string b = (String)iData.GetData(DataFormats.Text); textBox1.Text = textBox1.Text.Substring(0, (textBox1.Text.Length - textBox1.SelectedText.Length))+b; } } } 这样就实现了禁用非数字键,同时可以实现文本框的Ctrl+X,Ctrl+C,Ctrl+V功能。
xxxxxxxiexiaoshuai 2013-04-08
  • 打赏
  • 举报
回复
引用 4 楼 yezhendong185 的回复:
this.textBox1.SelectedText
厉害,确实是用 selectText。
xixihaha_2011_098 2013-04-07
  • 打赏
  • 举报
回复
引用 4 楼 yezhendong185 的回复:
this.textBox1.SelectedText
+1
yezhendong185 2013-04-07
  • 打赏
  • 举报
回复
this.textBox1.SelectedText
Bullatus 2013-04-07
  • 打赏
  • 举报
回复
TextBox不是有SelectedText这个属性么…… 补充一下,1楼那个是可以的,不是说你从后面选,Start就在后面的位置了……
引用 2 楼 degrey 的回复:
richtextbox中有个属性就是selection,更加简单吧~楼上的考虑了从后选取,但是如果是从前选呢
degrey 2013-04-07
  • 打赏
  • 举报
回复
richtextbox中有个属性就是selection,更加简单吧~楼上的考虑了从后选取,但是如果是从前选呢
vingsa8352 2013-04-07
  • 打赏
  • 举报
回复
int pos1 = textBox1.SelectionStart; int length = this.textBox1.Text.length; string str = this.textBox1.Text.Substring(length - pos1, length);

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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