但是使用enabled=false后,所有的文字就会变成灰色的,很难看。
如何能让文字保持是黑色的呢?

解决方案 »

  1.   

    Const EM_SETREADONLY = &HCF
    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 Sub Form_Load()
        SendMessage Text1.hwnd, EM_SETREADONLY, 1, 0
    End Sub
      

  2.   

    事实上,当Locked=True时,还可以通过鼠标右键的“选择”“粘贴”命令,向该文本框中填间内容。如果你仔细观察过在资源管理器中选中文件后,由鼠标右键命令的“属性”弹出的窗体中,比如时间“2000年12月9日, 21:37:45”都是文本框,也有右键菜单和鼠标“|”形状,但却完全不能修改,我想了很久,其实是通过两条命令实现的:
               Text1.Locked=True
               Text1.MaxLength=Len(Text1.Text)
    当然,也可以通过TechnoFantasy兄的API实现,但我觉得,如果微软都是通过这种方法,还是用这样的比较好一些,速度也快,也不费资源。
      

  3.   

    如果窗体中有其它控件,还可以在TetBox的GetFocus事件中加入以下代码:
    Private Sub Text1_GotFocus()
        Command1.SetFocus
    End Sub
    www.applevb.com
      

  4.   

    将属性菜单中的text的enable属性设为false
    最简便,也最可行
      

  5.   

        如果非要用text,最简单的办法就是   text1.enabled=false    需要修改时用command命令将    text1.enabled=true,    但这样会将文本框的字的颜色变成灰色.
        如果你只是简单的显示文本内容的话,请用label控件,这样用户是无法修改的.
        
      

  6.   

    为什么调用API不行?
    还是会出现那个可恶的光标。 
      

  7.   

    hidecaret 不行吗? 那还是用label吧
      

  8.   

    USE FOCUS:  PRIVATE SUB TEXT1_CLICK()
      COMMAND1.SETFOCUS
      END SUB
      

  9.   

    .enabled=false
    .backcolor=.....
      

  10.   

    方法一、Enable属性改为False,使用这种方法,Text控件不能够获得Focus,字体颜色是灰色
    方法二、Locked属性改为True,可以获得Focus,并且可以Copy、Paste
    方法三、编程实现
    Private Sub Text1_KeyPress(KeyAscii As Integer)
      KeyAscii = 0
    End Sub
    方法四、使用API函数……
        …………
      

  11.   

    哈哈哈!用Lable控件或都Picture控件吧!
      

  12.   

    你这样干脆用 Label 控件算了!
      

  13.   

    text1.locked=true
    ...
    PRIVATE SUB TEXT1_GETFOCUS()
      IF COMMAND1.ENABLED THEN COMMAND1.SETFOCUS
      END SUB 
      

  14.   

    對啦。把它LOCK住就行啦!能獲得輸入焦點,但不能輸入
      

  15.   

    在Visual Basic中,文本框(TextBox)是最常用的控件,熟练运用文本框是开发出高质量的应用程序的基础。笔者在从事应用程序开发中,摸索出有关文本框的应用技巧,写出来与VB爱好者共享。 
    1、设置只读文本框。 
        有些时候在窗口显示一段信息,但又不希望用户去改变它,怎样实现文本的只读呢?首先,我们可以利用标签框( label )的只读属性,以标签来代替文本框以实现只读属性,但也可以用小程序实现真正的文本框的只读。 
            Sub Text1_KeyPress (keyascii As Integer) 
            keyascii = 0 
            End Sub 
        或者也可以用sendkey方法使文本框失去焦点,如以下程序: 
            Sub Text1_KeyDown (KeyCode As Integer, Shift As Integer) 
            SendKeys "{tab}" 
            End Sub 
    2、限定文本框的输入内容和格式。 
        以下程序可以实现限定文本框只能输入数字: 
            Sub Text1_KeyPress (keyascii As Integer) 
            If keyascii <48 Or keyascii> 57 Then 
            Beep 
            Beep 
            [email protected] 
            keyascii = 0 
            End If 
            End Sub 
        若想限定文本框输入格式,可以使用VB的FORMAT函数,也可以使用专业版的屏蔽控件(Masked Edit),通过设定屏蔽控件的Mask属性可以对文本框的输入格式作精确控制。 
      
    3、为TextBox 创建快捷键。 
        VB规定,添加在窗体上的控件均在其Tabindex 属性中记载其加载顺序,程序运行时焦点按Tabindex 属性规定的顺序在控件间跳转。而为了简化操作,可VB中为任何具有 caption的属性的控制创建快捷键,这通过caption 属性中在想作为快捷键的字母前加&号实现。但有一个问题值得注意,而类似文本框这样的控件无 caption 这样的属性,这时可将标签与文本框同时使用。为 lable创建快捷键,标签 Tabindex 属性设置比文本框小1,又因为label 不能接收按点,焦点会自动跳至文本框。这相当于为文本框创建了快捷键。具体步骤如下: 
        (1) 首先绘制标签,再绘制文本框。或随意绘制各种控制,将标签 Tabindex 属性设置比文本框小1 
        (2) 在标签的caption 属性中使用“&”号设定快捷键 
        这样就相当于为文本框设定了快捷键,当你按下标签框的快捷键时,焦点就会跳至文本框上。 
      
    4、在设计时实现文本框换行。 
        对于文本框,在设计时properties 窗口不能输入换行符,但可以再程序执行时用代码来换行,即使用 ASCII字符的13和10,如下列小程序就可将两行文本放入文本框: 
            Sub form_load( ) 
            NL=chr(13)+chr(10) 
            text1.text=“my name is ”& NL & “ liu qiang” 
            End sub 
      
    5、创建口令文本框。 
        创建口令文本框可用设置属性的方法,也可以通过调用WINDOWS的API应用函数接口来实现。首先,文本框的属性 Passwordchar和maxlength 可用来设置口令框。其中 Passwordchar 指定文本框显示的字符,如指定“*”,则在文本框内显示“*”,Maxlength确定文本框中能输入几个字符。超过Maxlength以后,文本框发出警告声,不能接收更多的字符。若使用WINDOWS应用函数接口,可用GetWindowLong、SetWindowsLong和SendMessage等接口函数来实现,有兴趣的读者可查阅Windows API函数手册或VB的联机帮助文件,这里就不一一赘述了。