新聞中心
VB.NET經(jīng)過長時間的發(fā)展,很多用戶都很了解VB.NET回調(diào)函數(shù)了,這里我發(fā)表一下個人理解,和大家討論討論。創(chuàng)建數(shù)據(jù)庫事件處理函數(shù)(VB.NET回調(diào)函數(shù))

公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出東平免費做網(wǎng)站回饋大家。
#t#無論什么時候一個對象被打開并要被修改時,數(shù)據(jù)庫事件處理函數(shù)會被調(diào)用。當(dāng)然,如果這時我們監(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
文章題目:實例探討VB.NET回調(diào)函數(shù)
標(biāo)題路徑:http://fisionsoft.com.cn/article/dhjhcis.html


咨詢
建站咨詢
