C# Winform 多文本框联动

ttiimm11 2011-02-14 01:53:17
我有四个textbox,分别显示一个矩形的四个顶点的坐标,横纵坐标用“,”分割,例如:

textbox1.text=X1,Y1
textbox2.text=X2,Y1
textbox3.text=X2,Y2
textbox4.text=X1,Y2

我想实现的是,四个textbox的任何一个值发生变化,另一个相同的值也应该改变,例如:我改变了textbox1的X1,那么textbox4的X1也发生变化。

我的做法是:

分别在四个textbox的TextChanged事件里写类似下面的代码:

private void txtPos1_TextChanged(object sender, EventArgs e)
{
this.txtPos2.Text = this.txtPos2.Text.Split(',')[0] + "," + this.txtPos1.Text.Split(',')[1];
this.txtPos4.Text = this.txtPos1.Text.Split(',')[0] + "," + this.txtPos4.Text.Split(',')[1];
}

但这样存在的一个问题就是这个事件会被多次触发,还有什么好方法吗?

另问题二:我怎么限定这四个textbox只能输入形如“0.12,12.89”这样的两个double之间有一个“,”形式。
我试过在每一个KeyUp事件里这样写:

Regex reg = new Regex(@"[^\d]", RegexOptions.IgnoreCase); //只能输入数字
txtequNumber.Text=reg.Replace(txtequNumber.Text,"");

但第二句显然不对,不是“0.12,12.89”这样的格式了。问如何解决。
...全文
312 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttiimm11 2011-03-04
  • 打赏
  • 举报
回复
没有解决,最后还是用了button
wuyq11 2011-02-14
  • 打赏
  • 举报
回复
使用统一的private void txtPos_TextChanged(object sender, EventArgs e)
{ TextBox txt=sender as TextBox; //Split('.')分割
正则验证或使用masktextbox

^(?:(?:[1-9]?[0-9]|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5]))\.){3}(?:[1-9]?[0-9]|1[0-9]{2}|2(?:[0-4][0-9]|5[0-5]))$
验证码识别 2011-02-14
  • 打赏
  • 举报
回复
不熟悉

看看能不能换成鼠标事件


ttiimm11 2011-02-14
  • 打赏
  • 举报
回复
问题一:四个textbox的任何一个值发生变化,另一个相同的值也应该改变
问题二:如何限定这四个textbox只能输入形如“0.12,12.89”这样的两个double之间有一个“,”形式。
bdmh 2011-02-14
  • 打赏
  • 举报
回复
别split分来分区的,多麻烦,就直接重写text中的内容不就行了,就这么俩字

111,096

社区成员

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

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

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