'        Tip:其实很多问题在以前的贴子里都有过很好的解答,我建议大家提问前先搜一下以前的贴子,会节约很多时间的.
'
'     Author:吴文智
'       Date:2001-11-16
'Description:要试用本例请在窗体中填加两个文本框,txtMultiLine的Multiline属性设为True,txtOneLine的Multiline属性设为False,和一个Check
'            然后在代码窗体中粘贴如下代码
'            Good luck!Option ExplicitPrivate Sub Check1_Click()
    Select Case Check1.Value
    Case vbChecked
        txtMultiLine.Text = txtOneLine.Text
        txtMultiLine.Visible = True
        txtOneLine.Visible = False
    Case vbUnchecked
        txtOneLine.Text = txtMultiLine.Text
        txtMultiLine.Visible = False
        txtOneLine.Visible = True
    End Select
End Sub
Private Sub Form_Load()
    Check1.Caption = "自动换行"
    Check1.Value = vbUnchecked
    
    With txtOneLine
        txtMultiLine.Move .Left, .Top, .Width, .Height
    End With
    
    txtMultiLine.Text = ""
    txtOneLine.Text = ""
    
    txtMultiLine.Visible = False
    txtOneLine.Visible = True
End Sub

解决方案 »

  1.   

    谢谢两位,我也用过两个不同ScrollBars属性的文本框来做,可以不能解决怎么将第一个文本框其它所有属性赋予第二个文本框。然后将其一的text属性存盆。
      

  2.   

    文智兄,多谢你了!可能是我没写清楚问题所在。我在程序中设计的功能与记事本一样,有保存,另存为,字体设置等等记事本有的功能。文智兄所给的原码可以解决文本框内容相互拷贝的功能,延伸出去,也可以实现两个文本框之间诸如fontname,fontsize,blackColor等等功能,就是很烦琐。但是让我们设想一下,我们打开记事本,写入几句文字,设置好了字体,字体大小,字体颜色,背景颜色等等属性,这一切都是在txtOneLine文本框中实现的。接下来我们要自动换行了,将所有除ScrollBars以外的其它属性赋予txtMultiLine,之后对记事本的操作都是在txtMultiLine之上了。如果这样的话,可能要针对各种不同的操作编写两份代码以适应在txtOneLine和txtMultiLine之上的操作,然后在实际操作过程中判断再选择执行那段代码。于是代码量就会相对的大量增加并导致重复建设。我是想找出一个方便,快速的途径来实现它。希望各位有以教我!多谢了!
      

  3.   

    First, put a textbox with the MultiLine of True.
    Next, set the ScrollBars to the value of 2.
    Then, put a HScroll on the form.
    If you wanna the textbox auto-reline, follow the code below:Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Const LB_SETHORIZONTALEXTENT = &H194Private Sub Form_Load()
    SendMessage Text1.hwnd, LB_SETHORIZONTALEXTENT, HScroll1.hwnd, 0
    End Sub'The code has not been tested.
    'I wish I were correct.
      

  4.   

    谢谢asciiman兄,我回去试试!
      

  5.   

    Oh, No!!!!!!!
    The code that i gave you only works with listboxes.
    It doesn't work on textboxes.
    SORRY!!!!!!!!!!!!!!!!!!!!
      

  6.   

    Give me scroes any way.
      

  7.   

    asciiman兄,请留下email或QQ号,我把原码发给你!谢谢!
      

  8.   

    asciiman兄,已经发过来了!请看看!
      

  9.   

    可不可以将原来的文本保存为一个临时文件然后在新的控件中重新载入,如果成功的话请把源码发给我让我学习一下,我是新手,希望多看看大虾们的源码:))[email protected]谢谢。
      

  10.   

    To: griefforyou(为你伤心),在程序运行当中是不能改动TEXTBOX控件的ScrollBars属性的.
    To: lgs73327(大眼鱼),这种方法可以是可以,但是在重新载入中需要编写相对大量的重复代码,比如字体颜色,大小,背景等等很多东西.所以,用这种方法实现的话,就有背于我们偷懒的本意.:) 
      

  11.   

    你使用另一个文本框的时候可以不用编写字体,颜色,大小等的代码的吗?那我更想学习了:))
    可惜不能用copy *.*
      

  12.   

    我有办法!这个问题我考虑好久了。你可以根本就不使用TEXTBOX本身的SCROLL属性,将MULTILINE设成TRUE,将
    SCROLLBARS设成NONE,然后,把这个TEXTBOX放在一个PICTUREBOX里面。明白了没有?
    如果用户选择“自动换行”,那么你可以把TEXTBOX设成跟
    PICTUREBOX一样大,OK;
    如果用户选择“不自动换行”,那么你可以把TEXTBOX的高度和宽度设成
    无比的大,例如1000000!然后通过在PICTUREBOX旁边放两个滚动条的办法,
    移动TEXTBOX本身相对于PICTUREBOX的位置来实现滚动功能,也OK。最后就剩下一点例如不要让光标跑到显示范围之外啊之类的小问题了,
    用几个API很好解决。哈哈!!!!!!!!!!!!!!!!!!!!
      

  13.   

    junglerover(灌木丛)兄的方法很有创意,通过这个可以实现曲线救国!:)
    junglerover(灌木丛)兄,关于"不要让光标跑到显示范围之外啊之类的小问题了",用什么API可以实现?希望告之!谢谢!
      

  14.   

    我想知道Windows本身是通过什么来实现"自动换行"的?
    有知道的高手希望千万告诉我!谢谢拉!
      

  15.   

    junglerover(灌木丛)兄,你的方法很有创意,算是"曲线救国"的一种.:)
    有个小问题请教,"例如不要让光标跑到显示范围之外啊之类的小问题了"这些要用到什么API?!
    希望能告诉我!谢谢拉!
      

  16.   

    笨……
    就是GetCaretPos,通过它获取光标位置,
    然后随时判断
    如果一旦发现要出圈了就调整TextBox的位置。Windows本身的记事本显然是用C做的。你用VB不能实现的东西,
    人家当然好办了。
      

  17.   

    哦!
    这样来实现的话,在性能上跟Windows自带的记事本差距可就大了啊!
    junglerover(灌木丛)兄,难道就没有性价比高一点的方法吗?!
    唉!看来VB是有点弱啊!