VB.NET中回調(diào)函數(shù)如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供神農(nóng)架林區(qū)網(wǎng)站建設(shè)、神農(nóng)架林區(qū)做網(wǎng)站、神農(nóng)架林區(qū)網(wǎng)站設(shè)計、神農(nóng)架林區(qū)網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、神農(nóng)架林區(qū)企業(yè)網(wǎng)站模板建站服務(wù),十多年神農(nóng)架林區(qū)做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
VB.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解VB.NET回調(diào)函數(shù)了,這里我發(fā)表一下個人理解,和大家討論討論。創(chuàng)建數(shù)據(jù)庫事件處理函數(shù)(VB.NET回調(diào)函數(shù))
無論什么時候一個對象被打開并要被修改時,數(shù)據(jù)庫事件處理函數(shù)會被調(diào)用。當然,如果這時我們監(jiān)視的命令不是活動的,我們就應(yīng)該跳過任何被這個VB.NET回調(diào)函數(shù)調(diào)用的內(nèi)容。
If bEditCommand = False Then
Return
End If
同樣地,如果我們監(jiān)視的命令已經(jīng)結(jié)束,而ObjectOpenedForModify事件被另一個VB.NET回調(diào)函數(shù)再次觸發(fā)的話,而這時有對象被修改時,我們要阻止所有由這個VB.NET回調(diào)函數(shù)執(zhí)行的動作。
If bDoRepositioning = True Then
Return
End If
這個VB.NET回調(diào)函數(shù)剩余部分的代碼用來驗證我們是否正在處理EMPLOYEE塊索引。如果是的話,我們就獲取它的ObjectID和位置(三維點)。下面的代碼可以被粘貼到這個事件處理函數(shù)函數(shù)。
Public Sub objOpenedForMod(ByVal o As Object, ByVal e As ObjectEventArgs) If bEditCommand = False Then Return End If If bDoRepositioning = True Then Return End If Dim objId As ObjectId objId = e.DBObject.ObjectId Dim trans As Transaction Dim bt As BlockTable Dim db As Database db = HostApplicationServices.WorkingDatabase trans = db.TransactionManager.StartTransaction() Try 'Use it to open the current object! Dim ent As Entity = trans.GetObject(objId, OpenMode.ForRead, False) If TypeOf ent Is BlockReference Then 'We use .NET's RTTI to establish type. Dim br As BlockReference = CType(ent, BlockReference) 'Test whether it is an employee block 'open its extension dictionary If br.ExtensionDictionary().IsValid Then Dim brExtDict As DBDictionary = trans.GetObject(br.ExtensionDictionary(), OpenMode.ForRead) If brExtDict.GetAt("EmployeeData").IsValid Then 'successfully got "EmployeeData" so br is employee block ref 'Store the objectID and the position changedObjects.Add(objId) employeePositions.Add(br.Position) 'Get the attribute references,if any Dim atts As AttributeCollection atts = br.AttributeCollection If atts.Count > 0 Then Dim attId As ObjectId For Each attId In atts Dim att As AttributeReference att = trans.GetObject(attId, OpenMode.ForRead, False) changedObjects.Add(attId) employeePositions.Add(att.Position) Next End If End If End If End If trans.Commit() Finally trans.Dispose() End Try End Sub
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。