补充一下,我想要改变是TextBox控件的MutiLine属性,但它在运行时是只读的。

解决方案 »

  1.   

    text1.locked=true  '只读
    text1.locked=false '取消只读
      

  2.   

    没办法,只能使用两个,或者就使用 Mutiline为True的
      

  3.   

    首先谢谢你们但你们可能误会了,我的意思是:TextBox控件有Mutiline属性,在设计时它是可以改变的,但是在运行时如果试图改变它,如text1.mutiline=1 就会出错,因为它在运行时是只读的,怎么样才能在运行时改变这个属性呢?
      

  4.   

    真的没有办法了吗?API也不行吗?
      

  5.   

    属性已经固定,不能变的。
    除非你自己做一个ActiveX控件,或者把这个控件隐藏,显示另一个控件。
      

  6.   

    mutiline运行时就是只读的,没办法。
    实在要这样的控件就只能自己编了.
      

  7.   

    还是没有看明白你的意思,你看这样好吗?
    直接把textbox的enabel属性设置为false 
    这样就避免了更改!
    不知道对不对?!
      

  8.   

    你看可不可以用enable属性!
      

  9.   

    用api应该可以的,好象有个api叫什么 setReadOnly (记不清)。你 search 一下。
      

  10.   

    用两个Mutiline设置不同的控件,Show/Hide不就行啦。
    不过……,有必要这样吗?
      

  11.   

    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_STYLE = (-16)
    Private Const ES_MULTILINE = &H4&
    Private Const ES_AUTOVSCROLL = &H40&
    Private Const ES_AUTOHSCROLL = &H80&dim  lStyle  as long  lStyle = GetWindowLong(txtEdit.hwnd, GWL_STYLE)
     lStyle = lStyle Or ES_MULTILINE Or ES_AUTOHSCROLL Or ES_AUTOVSCROLL
     
     SetWindowLong txtEdit.hwnd, GWL_STYLE, lStyle
      

  12.   

    更新一下:Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_STYLE = (-16)
    Private Const WS_VSCROLL = &H200000
    Private Const WS_HSCROLL = &H100000
    Private Const ES_MULTILINE = &H4&
    Private Const ES_AUTOVSCROLL = &H40&
    Private Const ES_AUTOHSCROLL = &H80&dim  lStyle  as long  lStyle = GetWindowLong(txtEdit.hwnd, GWL_STYLE)
     lStyle = lStyle Or ES_MULTILINE Or WS_HSCROLL Or ES_AUTOHSCROLL Or WS_VSCROLL Or ES_AUTOVSCROLL
     
     SetWindowLong txtEdit.hwnd, GWL_STYLE, lStyle
      

  13.   

    锁定它,使它不能编辑就行 把它的locked的属性设为true就行了
      

  14.   

    Option ExplicitPrivate Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Const GWL_STYLE = (-16)
    Private Const ES_READONLY = &H2000&
    Private Const ES_MULTILINE = &H4&
    Private Sub Command1_Click()
      Text1 = "fadsfads"
    End SubSub Form_Load()
    Dim iStyle   As Long iStyle = GetWindowLong(Text1.hwnd, GWL_STYLE)
     iStyle = iStyle Or ES_READONLY Or ES_MULTILINE
     
     SetWindowLong Text1.hwnd, GWL_STYLE, iStyle
    End Sub
      

  15.   

    我是一个刚学vb不久的菜鸟,关于上面的问题,我有个意见,不知道是不是对的,
    可以文本框编写文本框的keypress事件,使它不接受外来的事件,不知道行不行.