c# textBox的输入格式控制

无语中V5 2010-04-12 05:17:43
在c#中想实现的格式控制和word差不多。当我们在Word中输入:1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;紧接着我们输入“2.”之后,它就会重新跳到一个新行中。效果如下:1.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2.yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
...全文
702 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
codeingsky 2010-04-13
  • 打赏
  • 举报
回复
做好比较复杂,因为很多涉及细节问题,响应键盘字符、是否输入其它字符编码。

这个可以参考下:


private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == '.') { var text = ((TextBox)sender).Text.Substring(0, ((TextBox)sender).SelectionStart); if (Regex.IsMatch(text, @"(\r|\n|^)\d+$")) return; // 数字在行首 var match = Regex.Match(text, @"\d+$"); if (match.Success) { ((TextBox)sender).SelectionStart = ((TextBox)sender).SelectionStart - match.Value.Length; ((TextBox)sender).SelectionLength = match.Value.Length; ((TextBox)sender).SelectedText = Environment.NewLine + match.Value; } } }

乱世狂刀 2010-04-13
  • 打赏
  • 举报
回复
这样的需求 我碰到好多次了 现在也有点经验了。。。 呵呵呵。。你找我吧 我给你解释。。。。
gramaster 2010-04-12
  • 打赏
  • 举报
回复
这个比较麻烦了,第一你说的想要实现text跟WORD一样的格式控制,我个人觉得实在没有必要,要是你一定要这样做的话,最好的办法是找第三方控件了,要不你自己写个也行,自己写的话,我可以给点意见:
千万不要期望在text控件里做判断来控制,因为情况非常复杂多变,比如可能有很多种序号1,2,3;一,二,三;a),b),c);1.1.1,1.1.2,1.1.3……,而且很可能跟其他的字符串弄混,比如小数和序号如何区别开,“1.2”到底是序号还是小数呢,“一”是序号还是只是段落中一个字呢?还有很多其他问题,所以你要做的话必须向word类文字处理软件看齐,自定义控件里有一些属性,比如定义序号模式,多级序号,字体啊,大小啊,这个工程量比较大,你注意下,大部分论坛里发帖,回复,编辑之类都没这么做,就知道了,大家都认为这样做不值得,除非你的应用里这块非常重要非得这么干。
xt218218 2010-04-12
  • 打赏
  • 举报
回复
帮 顶
usersname 2010-04-12
  • 打赏
  • 举报
回复
参考如下代码:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '.')
{
var text = ((TextBox)sender).Text.Substring(0, ((TextBox)sender).SelectionStart);
if (Regex.IsMatch(text, @"(\r|\n|^)\d+$")) return; // 数字在行首
var match = Regex.Match(text, @"\d+$");
if (match.Success)
{
((TextBox)sender).SelectionStart = ((TextBox)sender).SelectionStart - match.Value.Length;
((TextBox)sender).SelectionLength = match.Value.Length;
((TextBox)sender).SelectedText = Environment.NewLine + match.Value;
}
}
}
lbser 2010-04-12
  • 打赏
  • 举报
回复
工程量非常大,慢慢做吧
无语中V5 2010-04-12
  • 打赏
  • 举报
回复
楼上的做法好像有问题的,加入他想输入的是2.3元,那就变成了
2.3元
hujinn 2010-04-12
  • 打赏
  • 举报
回复
你还是找找有没有相关第三方控件吧 这个工程量十分浩大!~~~
缭绕飘渺 2010-04-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 foryouwife 的回复:]
在KeyPress里面控制。检测输入的样式,如果输入2.则在2.之前加换行符
[/Quote]
很有想法
但是要是输入一. 二. ....
你要分析几种呢
usersname 2010-04-12
  • 打赏
  • 举报
回复
要做好挺复杂,因为还有在中间输入的情况。
foryouwife 2010-04-12
  • 打赏
  • 举报
回复
在KeyPress里面控制。检测输入的样式,如果输入2.则在2.之前加换行符
Javayhwobxv2 2010-04-12
  • 打赏
  • 举报
回复
friendly up
kinglshadow 2010-04-12
  • 打赏
  • 举报
回复
friendly up

110,570

社区成员

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

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

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