明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線(xiàn)學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

怎么動(dòng)態(tài)加載multiline的text控件

[摘要]我剛開(kāi)始在csdn的vb論壇里看到這個(gè)帖子的時(shí)候,想了很久都沒(méi)有找到解決方法。后來(lái)看zy910寫(xiě)到“由于Edit控件的設(shè)定(只能在創(chuàng)建窗口時(shí)設(shè)置風(fēng)格,創(chuàng)建后不能修改)所以TextBox的MultiL...
我剛開(kāi)始在csdn的vb論壇里看到這個(gè)帖子的時(shí)候,想了很久都沒(méi)有找到解決方法。后來(lái)看zy910寫(xiě)到“由于Edit控件的設(shè)定(只能在創(chuàng)建窗口時(shí)設(shè)置風(fēng)格,創(chuàng)建后不能修改)

所以TextBox的MultiLine屬性實(shí)現(xiàn)原理是:先清除原有的Edit,再創(chuàng)建一個(gè)新的Edit

這在設(shè)計(jì)時(shí)是可行的。但在運(yùn)行時(shí),會(huì)導(dǎo)致文本框相關(guān)數(shù)據(jù)的丟失,甚至?xí)虿话踩拇a導(dǎo)致非法操作,所以M$將TextBox的MultiLine屬性設(shè)置成運(yùn)行時(shí)只讀”,那么通過(guò)直接使用textbox控件是無(wú)法滿(mǎn)足要求的了。

其實(shí)我們可以找到一個(gè)替代的方法,微軟給我們提供了一組無(wú)窗口控件庫(kù)。所謂“無(wú)窗口控件”是見(jiàn)名知義,是沒(méi)有無(wú)窗口,因而沒(méi)有hwnd屬性。這個(gè)庫(kù)在主要語(yǔ)言的參考文檔中沒(méi)有提到,它必須手工從common\Tools\vb\Winless目錄下安裝。安裝的方法是將這個(gè)目錄復(fù)制到硬盤(pán)上,用regsvr32或vb中對(duì)它進(jìn)行注冊(cè),然后雙擊Mswless.reg,它創(chuàng)建使activex控件對(duì)vb環(huán)境可用的注冊(cè)關(guān)鍵字。注冊(cè)完畢后,從按Ctrl+T從可用的Active控件列表中選取Microsoft Windowless Control 6來(lái)把函數(shù)庫(kù)加載到IDE中。

使用windowless函數(shù)庫(kù)的好處是在運(yùn)行時(shí)沒(méi)有內(nèi)部控件的限制,事實(shí)上所有的屬性都可以在運(yùn)行時(shí)改變。這個(gè)庫(kù)中包括TextBox的無(wú)窗口版—MSWLess.WLText。也就說(shuō)我們可以通過(guò)動(dòng)態(tài)加載這個(gè)控件,來(lái)實(shí)現(xiàn)動(dòng)態(tài)添加multiline屬性的text控件。

Dim WithEvents TxtEditor As MSWLess.WLText

Private Sub Command1_Click()



Set TxtEditor = Controls.Add("MSLess.WLText", "txtEdit")

TxtEditor.MultiLine = True

TxtEditor.ScrollBars = wlBoth

TxtEditor.Move 0, 0, ScaleWidth, ScaleHeight

TxtEditor.Visible = True



End Sub

注意:“工程屬性”中“刪除有關(guān)未使用的active控件的信息”的復(fù)選框不要選。