vs.net中的textbox控件,在鼠标 按下光标总是最前面,无法地位到想要的位置

wenjunwj 2009-03-02 04:42:02
我的程序里对textBox写了其他的事件,也不知道是不是导致该问题的原因.无论如何,该如何解决,请大家指教,谢谢.
...全文
661 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
storm_1984 2009-07-01
  • 打赏
  • 举报
回复
我也遇到了同样的问题,可不可以把详细点的代码发到storm_1984@126.com,谢谢
wenjunwj 2009-03-03
  • 打赏
  • 举报
回复
谢谢,您辛苦了,结贴加分了....
wenjunwj 2009-03-03
  • 打赏
  • 举报
回复
谢谢,您辛苦了,结贴加分了...
hyde8410 2009-03-03
  • 打赏
  • 举报
回复
你在这里做一下判断呀. 在满足条件时,才将光标定位到最后.
private void TextBox_MouseClick(object sender, MouseEventArgs e)
{
if(条件)
{
((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length;
}
}

例如: 你可在外面定义一个控制变量
private bool isEnd = false;

private void TextBox_MouseClick(object sender, MouseEventArgs e)
{
if(isEnd == false)
{
((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length;
isEnd = true;
}
}

在你需要的地方,再把 isEnd = false; 即可, 这样基本不怎么会影响你的光标定位问题了.

主要要看你的需求的...
wenjunwj 2009-03-03
  • 打赏
  • 举报
回复
写了
private void TextBox_MouseClick(object sender, MouseEventArgs e)
{
((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length;
}

这个事件后,光标被定为到文本的结尾处了,不能通过鼠标自由定位光标了.
hyde8410 2009-03-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wenjunwj 的回复:]
谢谢,你给的基本就是我想要的,也是可行的,只是还有一个问题,就是,这样做光标只能移到的文本的末尾,如果想让光标是鼠标点到哪里,光标就移到哪里,该怎么做呢?谢谢
[/Quote]

鼠标点哪,光标到哪? 你文本框中没有文本吗? 如果有文本, 不就是你鼠标点到文本的哪边,光标就定位到哪边吗?
就好像记事本一样. 只要文本框中有文件,不就是鼠标点哪,光标就到哪了吗? 还是你有其它特别的需求?
wenjunwj 2009-03-03
  • 打赏
  • 举报
回复
谢谢,你给的基本就是我想要的,也是可行的,只是还有一个问题,就是,这样做光标只能移到的文本的末尾,如果想让光标是鼠标点到哪里,光标就移到哪里,该怎么做呢?谢谢
hyde8410 2009-03-03
  • 打赏
  • 举报
回复
编号一个方法?
我们正常的做法是让 panel 中所有的 textBox 控件都订阅 同一个MouseClick 的事件.
代码如下:
/// <summary>
/// 窗体加载事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
foreach (object obj in panel1.Controls)
{
if (obj is TextBox)
{
((TextBox)obj).MouseClick += new MouseEventHandler(TextBox_MouseClick); //给panel1控件中每个文本框订阅 Enter 事件
}
}
}

/// <summary>
/// 文本框的鼠标单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TextBox_MouseClick(object sender, MouseEventArgs e)
{
((TextBox)sender).SelectionStart = ((TextBox)sender).Text.Length;
}


希望能帮到你吧...
wenjunwj 2009-03-03
  • 打赏
  • 举报
回复
现在对于一个textBox我可以使用mouseClick事件将光标移到文本的末尾,但是一个panel中有多个textBox控件,且都有相同的问题,我怎样编写一个函数,一次性实现一个panel内的所有textBox的改变呢?
对于一个textBox的mouseClick事件的具体代码如下:
private void txtLXRPho_MouseClick(object sender, MouseEventArgs e)
{
this.txtLXRPho.SelectionStart = this.txtLXRPho.Text.Length;
}
wenjunwj 2009-03-03
  • 打赏
  • 举报
回复
我的textBox是用来输入电话号码的,所以我写了一个函数判断textBox中的文本是否符合电话格式,这里用到了errProvider控件.其中一个textBox中可以输入两个手机号
/*----------------------------------------------------------------
//功能描述:判断输入的手机号码格式是否正确
//输入:手机号码
//输出:是否正确的标志
//----------------------------------------------------------------*/

private bool IsCorrectMobile(string mobile)
{
bool isCorrect = true;
if (mobile.Length != 0)
{
int index = mobile.IndexOf(',');
if (index > 0)
{
string subString1 = mobile.Substring(0, index);
string subString2 = mobile.Substring(index + 1);
if (!match.IsMatchMobile(subString1) || !match.IsMatchMobile(subString2))
{
erpMobile.SetError(txtLXRPho, "请输入以13或15开头的11位手机号码!");
isCorrect = false;
//this.txtLXRTel.AllowWordSelection = true;
}
else
{
erpMobile.Clear();
}
}
else
{
if (!match.IsMatchMobile(mobile))
{
erpMobile.SetError(txtLXRPho, "请输入以13或15开头的11位手机号码!");
isCorrect = false;
}
else
{
erpMobile.Clear();
}
}
}
else
{
erpMobile.Clear();
}
return isCorrect;

}
sly520 2009-03-02
  • 打赏
  • 举报
回复
如果是在空的textbox中的话好像没有看到过能定位到指定的位置的实例,如果是在有字符串的textbox中的话,不能定位到指定位置的话应该是你写了鼠标点击事件或者让写了textbox重新fouce()方法
捷哥1999 2009-03-02
  • 打赏
  • 举报
回复
你写了什么事件的代码,贴出来看看才能知道问题原因呀。

111,126

社区成员

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

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

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