C#中 TEXTBOX 自动换行的问题

问题描述

请问C#中如何设置TEXTBOX自动换行,比如我想输入10个字节之后让他自动换行,MUTIPLYLINE已经设置为TRUE,有这个算法的例子吗?谢谢

解决方案

解决方案二:
label.text="asdasdasa,<br>sdsds";label换行textbox.text="sdsadasds\nasdas";textbox换行
解决方案三:
有个wordwrap的属性..设置true就行了到边缘自动换行
解决方案四:
label.text="asdasdasa,<br>sdsds";label换行textbox.text="sdsadasdsrnasdas";textbox换行
解决方案五:
10个字节啊。应该把框自己拖成10个字节那么宽。然后MUTIPLYLINE已经设置为TRUE吧。
解决方案六:
要用到p/invoke。以下为代码。this.GetWordWrappedText(this.textBox)会把自动折行转成硬回车。usingSystem.Runtime.InteropServices;[DllImport("user32.dll")]staticexternintSendMessage(IntPtrhWnd,intwMsg,intwParam,intlParam);[DllImport("user32.dll",CharSet=CharSet.Unicode)]staticexternintSendMessage(IntPtrhWnd,intwMsg,intwParam,StringBuilderlParam);constintEM_GETLINE=0xc4;constintEM_GETLINECOUNT=0xba;stringGetWordWrappedText(TextBoxBasetextBox){intcount=SendMessage(textBox.Handle,EM_GETLINECOUNT,0,0);string[]lines=newstring[count];for(inti=0;i<count;++i)lines[i]=this.GetLine(textBox,i);returnstring.Join("rn",lines);}stringGetLine(TextBoxBasetextBox,intindex){StringBuilderbuffer=newStringBuilder("uffff".PadRight(0xffff));intcount=SendMessage(textBox.Handle,EM_GETLINE,index,buffer);returnbuffer.ToString(0,count);}privatevoidbutton1_Click(objectsender,EventArgse){MessageBox.Show(this.GetWordWrappedText(this.textBox1));}
解决方案七:
写个函数,判断每隔10字符时,就加入n。最后再返回值,传给textbox.Text即可。
解决方案八:
一个比较歪的方法,功能可以实现,你可以参考一下:intlen=1;privatevoidtextBox1_TextChanged(objectsender,EventArgse){if(len!=10){len+=1;}else{SendKeys.Send("{Enter}");len=0;}}

解决方案九:
引用7楼happyday1799的回复:

一个比较歪的方法,功能可以实现,你可以参考一下:C#codeintlen=1;privatevoidtextBox1_TextChanged(objectsender,EventArgse){if(len!=10){……

这个如果我在里面删除什么也要len也要+1了好像行不通
解决方案十:
还是要用内容改变事件、没添加一个或者删除一个判断下长度执行相应过程
解决方案十一:
n就是换行了。
解决方案十二:
该回复于2010-12-06 15:07:00被版主删除
解决方案十三:
privatevoidtextBox1_TextChanged(objectsender,EventArgse){if(textBox1.Lines[textBox1.Lines.Length-1].Length==10){textBox1.AppendText(Environment.NewLine);}}

试试这个哈~,看能否达到你要求~[align=center]********************************************************本内容用回复每天回帖即可获得10分可用分!********************************************************[/align]
解决方案十四:
引用12楼whowhen21的回复:

C#codeprivatevoidtextBox1_TextChanged(objectsender,EventArgse){if(textBox1.Lines[textBox1.Lines.Length-1].Length==10){textBox1.AppendText(Environment.NewLine);……

谢谢不过也是与7楼同样的问题哦,如果我光标移去中间某行打字或者删除内容就会出错
解决方案十五:
该回复于2010-12-06 15:06:58被版主删除
解决方案:
其实有两种方式可以实现:一种是不改变文本内容:设置换行属性textBox1.Multiline=true;//多行显示textBox1.WordWrap=true;//文字断行显示textBox1.Width=15;//这里设置显示10个文字的宽度像素

第二种是,在相应的文本中加入换行的文字转义符如在第10个字符后面加入"rn"之类的
解决方案:
那可以手动输入换行么??[align=center]********************************************************本内容用回复每天回帖即可获得10分可用分!********************************************************[/align]
解决方案:
privatevoidtextBox1_TextChanged(objectsender,EventArgse){intintChar=3;stringstrNewTextBox="";stringstrTextBox=this.textBox1.Text;intabc=this.textBox1.SelectionStart;if(strTextBox!=""){if(strTextBox.Contains("rn")){strTextBox=strTextBox.Replace("rn","");}if(strTextBox.Length>intChar){intintLine=Convert.ToInt32(Math.Ceiling((decimal)strTextBox.Length/(decimal)intChar));for(inti=0;i<intLine-1;i++){strNewTextBox+=strTextBox.Substring(i*intChar,intChar)+"rn";}strTextBox=strNewTextBox+strTextBox.Substring((intLine-1)*intChar);}}this.textBox1.Text=strTextBox;if(abc==textBox1.Text.Length||abc==0){textBox1.Focus();textBox1.Select(textBox1.TextLength,0);}}

我写了这么个方法,默认为3个字节的长度换行现在有2个问题1。无法使用回车2。在字符串中间部分(比如我输入了5行我要在第二行加一个字)操作的时候光标自动移动到最后的处理望高人指点
解决方案:
正在用学习了
解决方案:
有个wordwrap的属性..设置true就行了到边缘自动换行然后把textbox拉到指定大小
解决方案:
学习下
解决方案:
n是没法自动换行的,只能给Lines一个一个赋值,Lines是个string[]
解决方案:
引用17楼luckristy的回复:

C#codeprivatevoidtextBox1_TextChanged(objectsender,EventArgse){intintChar=3;stringstrNewTextBox="";stringstrTextBox=thi……

我想lz应该判断一下是超过10字节自动换行的还是按回车键换行的就可以了吧
解决方案:
privatevoidtextBox2_TextChanged(objectsender,EventArgse){if(textBox2.Text.Length%10==0){textBox2.Multiline=true;textBox2.WordWrap=true;textBox2.AppendText(Environment.NewLine);}}

解决方案:
这样的问题直接被我忽略了
解决方案:
C#TextBox换行运行在Windows上。Windows能够显示的换行必须由两个字符组成:carriagereturn&linefeed,也就是必须是"rn"。如果只是"n"在Windows中不能显示为换行的,这与Linux/Unix等其他的操作系统不一样。所以上边如果把"n"替换成"rn"就可以了。其实问题仍然没有很好的解决,因为用"rn"能够满足Windows的要求了,但是如果是其他平台怎么办?为了要确保让换行效果在各种平台上都能够正常的显示,请用Environment.NewLine。它可以确保在不同的平台下都能够返回正确的换行字符,在Windows下是rn,在Linux(Mono)下就应该是n了。所以上面的代码应该写成:aTextBox.Text="FirstLine"+Environment.NewLine+"SecondLine"+Environment.NewLine+"ThirdLine";另外C#TextBox换行你也可以用verbatimstringliteral(用@开始的字符串)的形式来输入换行符:aTextBox.Text=@"FirstLineSecondLineThirdLine";这种形式在代码[daima]中看起来很直观,但是如果代码编辑器是在Windows下运行的,仍然相当于输入了rn。Environment是一个静态类,位于System名称空间下,提供对当前程序的运行环境和平台的相关信息的访问。它提供了很多有用的静态属性和方法。
解决方案:
style="word-wrap:break-word;word-break:keep-all;"加这么一句,然后调整宽度就可以一到边缘就自动换行了

时间: 2024-10-14 12:07:16

C#中 TEXTBOX 自动换行的问题的相关文章

ASP.NET2.0中TextBox的两个有趣的属性

asp.net 在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制.这是为了提高应用程序安全性所考虑的.下面就是TextBox控件获得数据的内部方法,由此可以看出ReadOnly的限制: protected virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)

ASP.NET 2.0中TextBox服务器控件的ReadOnly和Disabled属性

ado|asp.net|服务器|控件 在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制.这是为了提高应用程序安全性所考虑的.下面就是TextBox控件获得数据的内部方法,由此可以看出ReadOnly的限制: protected virtual bool LoadPostData(string postDataKey, NameValueCollection post

ASP.NET2.0中TextBox两个有趣的属性

[导读]本文讲述了TextBox控件获得数据的内部方法中ReadOnly的限制,使用实例说明了这一点,并且提供了既使用ReadOnly,又可以通过Text属性获得值的方法. 在以前的ASP.NET 1.x版本中,设置为ReadOnly的TextBox控件在客户端更改了值后,在服务器端仍然可以得到修改后的值,但在ASP.NET 2.0中,这种做法已经限制.这是为了提高应用程序安全性所考虑的.下面就是TextBox控件获得数据的内部方法,由此可以看出ReadOnly的限制: protected vi

Excel单元格中数据自动换行的两种方法

Excel单元格中数据自动换行的两种方法   不管单元格中是已经有了数据,或者还等待输入数据,都可以对它执行自动换行命令.自动换行的方法有两种,现在就来对下面表格中已经超出单元格宽度的数据使用自动换行. Excel单元格中数据自动换行的方法一 选择要换行的单元格(可以是一个,也可以是多个),然后切换到"开始"选项卡,单击"对齐方式"组中的"自动换行"命令. Excel单元格中数据自动换行的方法二 1.选中要换行的单元格,单击鼠标右键,在弹出的菜单

关于easyui: 如何设置dialog中textbox不可编辑

问题描述 关于easyui: 如何设置dialog中textbox不可编辑 //$('#xzscore').attr("disabled", "disabled"); //$('#xzscore').attr('readonly', true); 试过上面两种方式没用,求解. 解决方案 看easyui的api. 解决方案二: 什么版本的easyui?1.4+的textbox重新生成过ui了,操作原来的对象无效,要调用textbox方法获取显示的对象来设置readon

tablet-求大神指导DEX的RichEditControl读取html如何设置table td中内容自动换行?

问题描述 求大神指导DEX的RichEditControl读取html如何设置table td中内容自动换行? 用richEditControl读取的html如果td内容过长,会把表格撑长,超出form最大宽度 ,这个问题十分让我蛋疼. 不好意思,没有C币了,希望大神们能指导小弟一下,万分感谢 解决方案 在样式表中限定变格宽度就可以了

如何用javascript设置gridview中textbox的值

问题描述 如何用javascript设置gridview中textbox的值,我在网上搜了许久,没有找到答案,请帮忙,谢谢! 解决方案 解决方案二:甭想你看看生成好的DataGrid的ID和Name是什么样子你就知道为什么不行了.解决方案三:gridview中textbox也可以设置ID,页面有了控件有了ID不就可以用javascript设值了...解决方案四:不会吧,顶一顶解决方案五:gridview里的文件框名称一般来说都是固定的格式如[gridviewid]$[控件id]$[行号]还是啥的

binding-wpf中textBox绑定list&amp;amp;lt;string&amp;amp;gt;显示

问题描述 wpf中textBox绑定list<string>显示 代码如下: List<string> list = new List<string>() { "tim", "tom", "mom" }; txb1.SetBinding(TextBox.TextProperty, new Binding("/") { Source = list }); txb2.SetBinding(Tex

formview中textbox的ID

问题描述 formview中显示textbox的ID为formview1.ItemTemplate.ItemTemplate.textbox1在原码里面有<asp:TextBoxID="姓名TextBox"而这些都不能正确调用formview中textbox的ID应该是什么怎么调用呢?