问题描述
请问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;"加这么一句,然后调整宽度就可以一到边缘就自动换行了