问题1:
    在TextBox多行时,即Multiline = true;WordWrap = true;这个时候TextBox会自动换行,但是在TextBox一行输入完,换行再输入一些文字,这个时候在第一行的任意地方输入空格或者感叹号,这个时候TextBox会在空格或者感叹号的地方换行,第一行会留下一大段空白,请问怎么不让他输入空格或者感叹号换行?
请不要说把WordWrap = false;我就是要自动换行,但是输入空格和感叹号时候的这种现象不要。
问题2:
    在RichTextBox多行时,WordWrap = true;这个时候不要按回车自动换行,而是输入满位之后换行,但是加入你先在第一行输入一部分汉字,请记得是汉字,然后再在剩余第一行后输入数字,输入到知道换行,这个时候你会发现,第一行的数字也换下来了,第一行只剩下汉字了,请也不要说把WordWrap = false,我就是要自动换行。
以上两点问题跪求请教解决。各位大人帮帮忙,问题1,问题2其中一个解决就可以拉。当然一起解决了最好了。
     

解决方案 »

  1.   

    想起了Word,在满行时,你不敲下空格或回车,它会自动缩小字间距,缩到实在不行了,就换行显示。(有点像弹簧。。)
    字间距问题,RichTextBox不好搞,TextBox更不用说了。
      

  2.   

    在这个TEXTBOX 的Keypress事件写如下代码
    e.Handled=e.KeyChar=="?"||e.KeyChar=32;
      

  3.   

        已经找到解决的方法,重写TEXTBOX或者RICHTEXTBOX控件的TEXTCHANGE方法,然后加一个属性专门设定一行只能容纳多少个字符,注意这个属性的单位是一个半角的长度,比如8代表一行可以表示8个半角或者4个全角,在TEXTCHANGE方法中控制当达到这个长度就换到下一行,记住换行要加换行符,TEXTBOX用"\r\n",RICHTEXTBOX用"\n",我现在用的是RICHTEXTBOX,是可以了,我在尝试TEXTBOX的时候感觉有一些问题。
        后记:这个方法的是可以对应了,但是你选择的TEXTBOX或者RICHTEXTBOX的字体表示出来文字的长度必须是一致的,任何字符的半角与半角一样长,任何字符的全角与全角一样长,任何字符的半角是全角的一半长。这样才可以做到换行的时候上下行是对齐的