實用的TextBox控制項的Undo屬性

來源:互聯網
上載者:User
控制項 很少有VB開發人員注意到文字框(TextBox)控制項具有Undo屬性,但這一屬性卻給程式員帶來方便。這是一個相當出色的特性,在很多需要編輯文本或者圖形的商業軟體的開發中都使用到。許多程式都需要多層級的撤消,或者有些程式需要“重新操作”而取消最後一步的操作,這些繁瑣的要求都需要複雜的編程設計,但TextBox控制項的一個簡單的Undo屬性就可以很容易地實現這些過程。


由於Undo功能是屬於文字框控制項,你所需要的是向控制項發送一個“undo youself”的訊息。這一過程可以使用API函數SendMessage來實現。這一函數的聲明為:

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByValhWnd As Long, _
ByValwMsg As Long, ByValwParam As Long, _
lParam As Any) As Long


第一個參數是接受訊息的控制代碼,在本例中為TextBox控制項的hWnd屬性。

第二個參數是識別訊息的數字。為了能夠撤消某一操作,通常傳遞&HC7值,這也是代表著EM_UNDO常量。

第三個和第四個參數可用於某些訊息,但在本例中它沒有被使用,你可以將它們置為0。

函數返回的值取決於發送的訊息。在本例中可以被省略。


為了能真正使用這一技巧,建立一個帶有一個表單的工程,表單中包含一個TextBox控制項和一個Command按鈕控制項。在Command按鈕控制項的點擊事件程式中添加以下程式碼:

SendMessage Text1.hWnd, EM_UNDO, 0&, 0&

在工程中添加一個模組並在模組中添加如下的代碼:

Public Const EM_UNDO = &HC7
Public Declare Function SendMessage Lib "user32" _
Alias "SendMessageA" (ByValhWnd As Long, _
ByValwMsg As Long, ByValwParam As Long, _
lParam As Any) As Long

當運行這一工程時,在TextBox控制項中輸入和編輯文本。可以看到,按鈕撤消了最後一步的操作。如果沒有什麼東西可以撤消,訊息就不會起作用。你可以將Undo屬性作為一個功能表命令以影響文字框的啟用,如下所示:

If TypeOfActiveControl Is TextBox Then
SendMessageActiveControl.hWnd, EM_UNDO, 0&, 0&
End If

如果一個文字框沒有被啟用,按鈕就不會執行任何操作。

TextBox控制項的Undo屬性是一個具有吸收力和友好的特性,並且使用起來非常的簡單。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。