您好,登錄后才能下訂單哦!
VB.NET中回調函數如何使用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
VB.NET經過長時間的發展,很多用戶都很了解VB.NET回調函數了,這里我發表一下個人理解,和大家討論討論。創建數據庫事件處理函數(VB.NET回調函數)
無論什么時候一個對象被打開并要被修改時,數據庫事件處理函數會被調用。當然,如果這時我們監視的命令不是活動的,我們就應該跳過任何被這個VB.NET回調函數調用的內容。
If bEditCommand = False Then
Return
End If
同樣地,如果我們監視的命令已經結束,而ObjectOpenedForModify事件被另一個VB.NET回調函數再次觸發的話,而這時有對象被修改時,我們要阻止所有由這個VB.NET回調函數執行的動作。
If bDoRepositioning = True Then
Return
End If
這個VB.NET回調函數剩余部分的代碼用來驗證我們是否正在處理EMPLOYEE塊索引。如果是的話,我們就獲取它的ObjectID和位置(三維點)。下面的代碼可以被粘貼到這個事件處理函數函數。
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
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。