程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> vb實現防止用戶編輯文本框控件中的內容

vb實現防止用戶編輯文本框控件中的內容

編輯:VB綜合教程

  Visual Basic中的文本框控件允許用戶在其中鍵入文本,以便在 程序中使用。相反, 程序員可能會希望顯示一些文本但不希望用戶編 輯該文本。本文介紹了如何創建只讀的文本框控件的內容。

  使一個文本框控件只讀

  在Visual Basic中,如果文本框控件的MultiLine屬性設置為True ,文本將會自動地換行到下一行。另外,如果文本框控件的ScrollBars 屬性設置為3-Both(或者1-Vertical,或者2-Horizontal),用戶還能夠 滾動控件中的內容。

  程序員要想實現文本框控件中的文本不可編輯,可將文本框控件 中的內容設置為只讀狀態,這可以通過使用Microsoft Windows應用程 序編程接口(API)的SendMessage函數來實現。

  SendMessage函數可以用來發送一個EM_SETREADONLY消息到文本 框控件中,這將使文本框控件變為只讀。

  要在程序中使用該SendMessage函數,需要將如下的聲明語句包含 在項目的通用聲明部分中(注意該聲明語句需要書寫在一行內):

  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"(B yVal hwnd As Long, ByVal wMsg As Long, ByVa l wParam As Integer, ByVallParam As Long) As Long

  該SendMessage函數需要4個參數,如下所示:

  ?hwnd 一個長整數值,它包含文本框控件的句柄。

  .wMsg 一個長整數值,它包含被發送的消息,在這個例子裡,是EM_ SETREADONLY。

  ?wParam 一個整數值,如果它為True,則控件被設置只讀標記,如 果它為False,則刪除控件的只讀標記。

  ?lParam 一個長整數值,它應該被設置為0(EM_SETREADONLY不使 用它)。

  在程序運行了此SendMessage函數之後,將返回一個長整數值,指 明調用成功(返回值非0)或是失敗(返回值為0)。

  樣例程序

  該程序顯示了如何防止用戶編輯一個文本框控件中的內容。

  1.在Visual Basic中開始一個新的工程,采用缺省的方法建立For m1。

  2.將如下的常量和聲明語句添加到Form1的通用聲明部分中(注意 該聲明語句需

  要書寫在一行內):

  

  Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVa l wParam As Integer, ByVal lPara mAs Long) As Long
  
        Const WM_USER = &H400
  
        Const EM_SETREADONLY = (WM_USER + 31)

  3.在Form1上添加一個文本框控 采用缺省的方法建立Text1。 將其MultiLine屬性

  設置為True,並且將它的ScrollBars屬性設置為3-Both。

  4.在Form1上添加一個命令按鈕控件,采用缺省的方法建立Comman d1。

  5.將如下的代碼添加到Command1的單擊事件中:

  

  Private Sub Command1_Click()
  
        Dim RetVal As Long
  
        RetVal = SendMessage(Text1.hwnd, EM_SETREADONLY, True, B yVal 0&)
  
        End Sub

  通過按下F5鍵來執行樣例程序。在文本框控件中鍵入一些文本, 可以使用水平和垂直流動條來滾動文本,還可以改變文本的內容。單 擊命令按鈕,用戶仍然可以使用流動條或是光標鍵來查看文本框控件 的內容,但是不能編輯它。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved