版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 9 9 章 使用事件第 9 9 章 使用事件 事件是 AutoCAD 發(fā)出的通知或消息,通知用戶有關(guān)任務(wù)的當(dāng)前狀態(tài),或就發(fā)生的某件事警告用戶。例如,保存圖形時(shí)會(huì)觸發(fā) BeginSave 事件,當(dāng)打開圖形、啟動(dòng)命令以及系統(tǒng)變量被修改時(shí)會(huì)觸發(fā)另外的事件。有了這項(xiàng)信息,用戶可以編寫子例程或事件處理程序,使用這些事件來跟蹤處理特定圖形所用的時(shí)間。 本節(jié)主題 了解AutoCAD中的事件 事件處理的原則 注冊(cè)和解除注冊(cè)事件 處理應(yīng)用程序事件 處理文檔事件 處理 DocumentCollection 事件 處理對(duì)象事件 用.NET注冊(cè)COM基礎(chǔ)事件 9.1了解AutoCAD中的事件第9 章 使用事件9.
2、19.1了解AutoCADAutoCAD中的事件在 AutoCAD 中有許多不同的事件類型。下面是一些普通的事件類型: Application - 事件響應(yīng) AutoCAD 的關(guān)閉、系統(tǒng)變量的修改、雙擊前以及進(jìn)入和離開模型狀態(tài)。 Database - 事件響應(yīng)保存圖形,對(duì)象的添加,刪除或修改,塊引用的插入,附加和修改外部圖形(Xrefs)。也有文檔層的事件用于系統(tǒng)變量的修改。 Document - 事件響應(yīng)圖形的關(guān)閉,AutoCAD 命令的發(fā)出,發(fā)出 AutoLISP 命令或語句以及修改系統(tǒng)變量。 DocumentCollection - 事件響應(yīng)文件的創(chuàng)建和銷毀,文檔的激活或失活,以及文檔鎖
3、定模式的修改。 Editor - 事件響應(yīng)用戶的輸入請(qǐng)求被修改時(shí)。 9.19.1了解AutoCADAutoCAD中的事件 Graphics - 事件響應(yīng)視圖的創(chuàng)建和銷毀,以及視圖配置的修改。 Plotting - 事件響應(yīng)于打印一個(gè)布局。 Publishing - 事件響應(yīng)于布局的發(fā)布。 Runtime - 事件響應(yīng)于模型的加載和卸載,以及變量已修改或正在修改。 Windows - 事件響應(yīng)于狀態(tài)欄、托盤項(xiàng)目、面板和信息中心的修改。 用于響應(yīng)事件的子例程稱為事件處理程序,每次觸發(fā)指定給它們的事件時(shí),都會(huì)自動(dòng)執(zhí)行這些程序。事件中包含的信息會(huì)通過參數(shù)被返回,像 SystemVariableChan
4、ging 事件中的系統(tǒng)變量名,它會(huì)通過事件處理程序的 SystemVariableChangingEventArgs 對(duì)象被傳遞出來。 9.2事件處理的原則第9 章 使用事件9.29.2事件處理的原則需要記住的是,事件只是提供了 AutoCAD 內(nèi)部發(fā)生的狀態(tài)或動(dòng)作信息。雖然事件處理程序可以響應(yīng)這些事件,但觸發(fā)事件處理程序時(shí),AutoCAD 通常都是正處在處理命令的執(zhí)行過程中。因此,如果要使事件處理程序在涉及 AutoCAD 及其數(shù)據(jù)庫時(shí)提供安全的操作,則需要對(duì)事件處理程序進(jìn)行一些限制。 不要依賴事件發(fā)生的順序。 編寫事件處理程序時(shí),請(qǐng)不要依賴用戶所認(rèn)為的事件發(fā)生順序。例如,如果用戶發(fā)出 OP
5、EN 命令,則事件 CommandWillStart, DocumentCreateStarted, DocumentCreated, 和 CommandEnded 將全部被觸發(fā)。但它們的發(fā)生順序可能并不是這樣。唯一可以確定大多數(shù)事件都是成對(duì)出現(xiàn)的,你 beginning 和 Ending 事件。9.29.2事件處理的原則 不要依賴操作的順序。 如果用戶刪除 object1,然后再刪除 object2,這時(shí)請(qǐng)不要依賴這樣的事實(shí),即先收到 object1 的 ObjectErased 事件,然后收到 object2 的事件。實(shí)際上用戶可能會(huì)先收到 object2 的 ObjectErased 事
6、件。 不要試圖從事件處理程序中執(zhí)行任何交互式函數(shù)。 試圖從事件處理程序中執(zhí)行交互式函數(shù)可能會(huì)造成嚴(yán)重問題,因?yàn)橛|發(fā)事件時(shí) AutoCAD 可能仍在處理命令。因此,應(yīng)始終在事件處理程序中避免在命令提示符下請(qǐng)求用戶輸入,也不要請(qǐng)求選擇對(duì)象和 SendStringToExecute 方法。 9.29.2事件處理的原則 不要從事件處理程序中啟動(dòng)對(duì)話框。 對(duì)話框和交互式函數(shù)一樣,也會(huì)干涉 AutoCAD 的當(dāng)前操作。消息框和警告框不被認(rèn)為是交互的,因而可以安全地發(fā)出;但在事件處理程序中像 EnterModal, LeaveModal, DocumentActivated 和 DocumentToBeDe
7、activated 事件中發(fā)出消息框則會(huì)導(dǎo)致順序混亂。 可以向數(shù)據(jù)庫中的任何對(duì)象寫入數(shù)據(jù),但發(fā)出事件的對(duì)象除外。 顯然,導(dǎo)致觸發(fā)事件的任何對(duì)象可能仍在 處于打開狀態(tài),并用于當(dāng)前正在執(zhí)行的操作。因此,要避免從對(duì)象的事件處理程序?qū)⑷魏涡畔⒃賹懭氲皆搶?duì)象。然而,用戶可以安全地從觸發(fā)事件的對(duì)象讀取信息。9.29.2事件處理的原則 不要從事件處理程序中執(zhí)行任何觸發(fā)相同事件的操作。 如果在事件處理程序中執(zhí)行觸發(fā)該相同事件的相同操作,會(huì)導(dǎo)致無限循環(huán)。例如,用戶不該嘗試從 ObjectOpenedForModify 事件中打開對(duì)象;否則,AutoCAD 將不斷打開對(duì)象。 請(qǐng)記住,AutoCAD 顯示模式對(duì)話框
8、時(shí),不會(huì)觸發(fā)任何事件。 9.3注冊(cè)和解除注冊(cè)事件第9 章 使用事件9.39.3注冊(cè)和解除注冊(cè)事件 用記在可以響應(yīng)事件前,事件必須在 AutoCAD 中注冊(cè)。通過創(chuàng)建一個(gè)新的合適的類型的事件處理程序注冊(cè)事件,然后將它指定給你想注冊(cè)的事件的對(duì)象。一旦事件完成,最好是注冊(cè)它,以盡量減小和其它反應(yīng)器的沖突以及減少 AutoCAD 需要維護(hù)事務(wù)處理程序所使用的內(nèi)存和 CPU 時(shí)間。 注冊(cè)事件 用戶通過為事件追加一個(gè)事件處理程序來注冊(cè)。事件處理程序?qū)ο笮枰粋€(gè)必須在用戶工程中定義的過程。大多數(shù)事件處理程序需要一個(gè)接受兩個(gè)參數(shù)的過程,一個(gè)參數(shù)的類型為 Object 而另一個(gè)表示事件的返回參數(shù)。注冊(cè)事件使用
9、VB.NET 的 AddHandler 語句或 C# 的 += 運(yùn)算符。9.39.3注冊(cè)和解除注冊(cè)事件 下面代碼注冊(cè)一個(gè)名為 appSysVarChanged 的過程與 SystemVariableChangedEventHandler 對(duì)象類型的 SystemVariableChanged 事件相關(guān)聯(lián)。appSysVarChanged 過程接受兩個(gè)參數(shù): Object 和 SystemVariableChangedEventArgs。SystemVariableChangedEventArgs 對(duì)象返回事件被注冊(cè)后修改的系統(tǒng)變量的名字。 Application.SystemVariableC
10、hanged += new SystemVariableChangedEventHandler(appSysVarChanged)9.39.3注冊(cè)和解除注冊(cè)事件 解除注冊(cè)事件 事件的解除注冊(cè)是通過從事件中移除分配給它的事件處理程序來完成的。用戶利用與向事件注冊(cè)事件處理程序相同的語法,來解除事件的注冊(cè),只是使用的語句或運(yùn)算符有所不同,必須使用 VB.NET 的 RemoveHandler 語句或C#的-=運(yùn)算符。9.39.3注冊(cè)和解除注冊(cè)事件 下面代碼從對(duì)象類型為 SystemVariableChangedEventHandler 的 SystemVariableChanged 事件中解除注冊(cè)名
11、為 appSysVarChanged 的過程。 Application.SystemVariableChanged += new SystemVariableChangedEventHandler(appSysVarChanged)9.4 處理應(yīng)用程序事件第9 章 使用事件9.4 9.4 處理應(yīng)用程序事件 應(yīng)用程序?qū)ο笫录糜陧憫?yīng)應(yīng)用程序窗口。一旦應(yīng)用程序事件被注冊(cè),它就一直會(huì)存在,直到 AutoCAD 被關(guān)閉或事件解除注冊(cè)。 下面的事件可用于應(yīng)用程序?qū)ο螅?BeginCustomizationMode 僅在 AutoCAD 進(jìn)入自定義模式時(shí)觸發(fā)。 BeginDoubleClick 當(dāng)鼠標(biāo)雙擊
12、時(shí)觸發(fā)。 BeginQuit 僅在 AutoCAD 進(jìn)程結(jié)束前觸發(fā)。9.4 9.4 處理應(yīng)用程序事件 DisplayingCustomizeDialog 僅在自定義對(duì)話框顯示前觸發(fā)。 DisplayingDraftingSettingsDialog 僅在草圖設(shè)置對(duì)話框顯示前觸發(fā)。 DisplayingOptionDialog 僅在選項(xiàng)對(duì)話框顯示前觸發(fā)。 EndCustomizationMode 當(dāng) AutoCAD 退出自定義模式時(shí)觸發(fā)。 EnterModal 僅在模型對(duì)話框顯示前觸發(fā)。9.4 9.4 處理應(yīng)用程序事件 Idle 當(dāng) AutoCAD 發(fā)送信息時(shí)觸發(fā)。 LeaveModal 當(dāng)模型
13、對(duì)話框關(guān)閉時(shí)觸發(fā)。 PreTranslateMessage 僅在通過 AutoCAD 轉(zhuǎn)換一個(gè)信息時(shí)觸發(fā)。 QuitAborted 當(dāng)嘗試終止正在關(guān)閉的 AutoCAD 時(shí)觸發(fā)。 QuitWillStart 在 BeginQuit 事件后,開始關(guān)閉前觸發(fā)。9.4 9.4 處理應(yīng)用程序事件 SystemVariableChanged 當(dāng)嘗試修改系統(tǒng)變量完成時(shí)觸發(fā)。 SystemVariableChanging 僅在嘗試修改系統(tǒng)變量前觸發(fā)。 啟用應(yīng)用程序?qū)ο笫录?本例演示如何用 BeginQuit 事件注冊(cè)事件處理程序。一旦注冊(cè)完,AutoCAD 完全關(guān)閉前會(huì)顯示一個(gè)對(duì)話框。 9.4 啟用應(yīng)用程序
14、對(duì)象事件 .cs9.5處理文檔事件第9 章 使用事件9.59.5處理文檔事件 文檔對(duì)象事件用于響應(yīng)文檔窗口。當(dāng)文檔事件被注冊(cè)后,它僅關(guān)聯(lián)與之關(guān)聯(lián)的文檔對(duì)象。所以如果一個(gè)事件需要和每個(gè)文檔注冊(cè),就應(yīng)該使用 DocumentCollection 對(duì)象的 DocumentCreated 事件注冊(cè)事件給每個(gè)新的或打開的圖形。 下列事件可用于文檔對(duì)象: BeginDocumentClose 僅在收到關(guān)閉圖形的請(qǐng)求后觸發(fā)。 CloseAborted 當(dāng)嘗試終止關(guān)閉圖形時(shí)觸發(fā)。9.59.5處理文檔事件 CloseWillStart 在 BeginDocumentClose 事件后,開始關(guān)閉圖形前觸發(fā)。 Co
15、mmandCancelled 當(dāng)命令在完成前被取消時(shí)觸發(fā)。 CommandEnded 命令完成后馬上觸發(fā)。 CommandFailed 當(dāng)命令未能完成并沒有取消時(shí)觸發(fā)。 CommandWillStart 命令發(fā)出后,在它完成前馬上觸發(fā)。9.59.5處理文檔事件 ImpliedSelectionChanged 當(dāng)當(dāng)前 Pickfirst 選擇集設(shè)置修改時(shí)觸發(fā)。 LispCancelled 當(dāng) LISP 表達(dá)式計(jì)算取消時(shí)觸發(fā)。 LispEnded 在 LISP 表達(dá)式計(jì)算完成時(shí)觸發(fā)。 LispWillStart 當(dāng) AutoCAD 接收到 LISP 表達(dá)式的計(jì)算請(qǐng)求后馬上觸發(fā)。 UnknownCo
16、mmand 當(dāng)在命令提示符中輸入未知命令時(shí)馬上觸發(fā)。9.59.5處理文檔事件 啟動(dòng)文檔對(duì)象事件 本例使用 BeginDocumentClose 事件提示用戶是否想繼續(xù)關(guān)閉當(dāng)前圖形。一個(gè)有 Yes 和 No 按扭的消息框會(huì)被顯示。點(diǎn)擊 No 后使用事件處理程序返回的參數(shù)的 Veto 方法終止文檔的關(guān)閉。 9.5 啟動(dòng)文檔對(duì)象事件 .cs9.6處理 DocumentCollection 事件第9 章 使用事件9.69.6處理 DocumentCollection DocumentCollection 事件 DocumentCollection 對(duì)象事件用于響應(yīng)在應(yīng)用程序中打開文檔。Document
17、Collection 事件不同于 Document 對(duì)象事件,它將一直保持注冊(cè)狀態(tài),直到 AutoCAD 關(guān)閉或 解除注冊(cè)。 下面的事件可用于 DocumentCollection 對(duì)象: DocumentActivated 當(dāng)文檔窗口激活時(shí)觸發(fā)。 DocumentActivationChanged 活動(dòng)文檔窗口失活或銷毀后觸發(fā)。9.69.6處理 DocumentCollection DocumentCollection 事件 DocumentBecameCurrent 當(dāng)文檔窗口設(shè)置為當(dāng)前文檔并且與前一個(gè)活動(dòng)文檔窗口不同時(shí)觸發(fā)。 DocumentCreated 文檔窗口被創(chuàng)建后觸發(fā)。創(chuàng)建一個(gè)
18、新圖形或打開一個(gè)現(xiàn)有圖形后出現(xiàn)。 DocumentCreateStarted 僅在文檔窗口被創(chuàng)建前觸發(fā)。創(chuàng)建一個(gè)新圖形或打開一個(gè)現(xiàn)有圖形前出現(xiàn)。 DocumentCreationCanceled 當(dāng)要求創(chuàng)建新圖形以及打開一個(gè)現(xiàn)有圖形被取消后觸發(fā)。9.69.6處理 DocumentCollection DocumentCollection 事件 DocumentDestroyed 在文檔窗口被銷毀以及與它關(guān)聯(lián)的數(shù)據(jù)庫對(duì)象被刪除前觸發(fā)。 DocumentLockModeChanged 文檔的鎖定模式被修改后觸發(fā)。 DocumentLockModeChangeVetoed 修改文檔的鎖定模式被禁止后
19、觸發(fā)。 DocumentLockModeWillChange 文檔的鎖定模式被修改前觸發(fā)。 DocumentToBeActivated 當(dāng)文檔將要被激活時(shí)觸發(fā)。9.69.6處理 DocumentCollection DocumentCollection 事件 DocumentToBeDeactivated 當(dāng)文檔將要失活時(shí)觸發(fā)。 DocumentToBeDestroyed 當(dāng)文檔將要銷毀時(shí)觸發(fā)。 啟用 DocumentCollection 對(duì)象事件 下面示例使用 DocumentActivated 事件指示一個(gè)圖形窗口已激活。當(dāng)事件出現(xiàn)時(shí)將顯示一個(gè)消息框,內(nèi)容為被激活文檔的圖形名。 9.6 啟
20、用 DocumentCollection 對(duì)象事件 .cs9.7處理對(duì)象事件第9 章 使用事件9.79.7處理對(duì)象事件 對(duì)象事件用于響應(yīng)從圖形數(shù)據(jù)庫中打開、添加、修改和刪除對(duì)象。有兩種與對(duì)象類型相關(guān)的事件:對(duì)象和數(shù)據(jù)庫層。對(duì)象層事件被定義成響應(yīng)數(shù)據(jù)庫中指定的對(duì)象,而數(shù)據(jù)庫層事件用于響應(yīng)數(shù)據(jù)庫中所有對(duì)象的事件。 定義一個(gè)對(duì)象層事件是通過注冊(cè)一個(gè)事件處理程序到一個(gè)數(shù)據(jù)庫對(duì)象的事件中來完成的。數(shù)據(jù)庫層對(duì)象事件的定義是通過注冊(cè)一個(gè)事件處理程序到任一個(gè)打開數(shù)據(jù)庫對(duì)象的事件來完成的。9.79.7處理對(duì)象事件 下列事件可用于 DBObjects: Cancelled 當(dāng)對(duì)象的打開操作被取消時(shí)觸發(fā)。 Copi
21、ed 對(duì)象被復(fù)制后觸發(fā)。 Erased 當(dāng)對(duì)象標(biāo)記為刪除或取消刪除時(shí)觸發(fā)。 Goodbye 當(dāng)對(duì)象因?yàn)榕c它相關(guān)的數(shù)據(jù)庫將被銷毀而將要從內(nèi)存中刪除時(shí)觸發(fā)。9.79.7處理對(duì)象事件 Modified 當(dāng)對(duì)象修改后觸發(fā)。 ModifiedXData 當(dāng)附加到對(duì)象的 XData 被修改后觸發(fā)。 ModifyUndone 當(dāng)對(duì)象先前的修改未完成時(shí)觸發(fā)。 ObjectClosed 當(dāng)對(duì)象關(guān)閉時(shí)觸發(fā)。 OpenedForModify 為修改對(duì)象而打開對(duì)象時(shí)觸發(fā)。9.79.7處理對(duì)象事件 Reappended 當(dāng)一個(gè)撤消操作后對(duì)象從數(shù)據(jù)庫中移除,然后使用重做操作重新追加時(shí)觸發(fā)。 SubObjectModified 當(dāng)對(duì)象的子對(duì)象被修改時(shí)觸發(fā)。 Unappended 當(dāng)一個(gè)撤消操作后對(duì)象從數(shù)據(jù)庫中移除時(shí)觸發(fā)。9.79.7處理對(duì)象事件 下面的一些事件用于響應(yīng)數(shù)據(jù)庫層的對(duì)象變化: ObjectAppended 當(dāng)對(duì)象添加到數(shù)據(jù)庫時(shí)觸發(fā)。 ObjectErased 當(dāng)對(duì)象從數(shù)據(jù)庫中清除或撤消清除時(shí)觸發(fā)。 ObjectModified 當(dāng)對(duì)象被修改時(shí)觸發(fā)。 ObjectOpenedForModify 為修改對(duì)象而打開對(duì)象時(shí)觸發(fā)。9.79.7處理對(duì)象事件 ObjectReappe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度2025年度花店門店裝修合同
- 環(huán)保人物事跡(范文10篇)
- 2025年分期禮品定制合同
- 2025年公司創(chuàng)始人競(jìng)業(yè)限制合同
- 2025年房地產(chǎn)勘察技術(shù)標(biāo)準(zhǔn)制定合同
- 人力資源居間合同模板
- 能源貿(mào)易購銷及服務(wù)合同
- 農(nóng)產(chǎn)品批發(fā)市場(chǎng)居間合同
- 木工工程勞務(wù)分包合同
- 企業(yè)品牌宣傳與推廣營銷合同
- 國家電網(wǎng)招聘2025-企業(yè)文化復(fù)習(xí)試題含答案
- 醫(yī)院物業(yè)服務(wù)組織機(jī)構(gòu)及人員的配備、培訓(xùn)管理方案
- 外觀判定標(biāo)準(zhǔn)
- 江西上饒市2025屆數(shù)學(xué)高二上期末檢測(cè)試題含解析
- 腦卒中后吞咽障礙患者進(jìn)食護(hù)理團(tuán)體標(biāo)準(zhǔn)
- 工行人工智能風(fēng)控
- 2023風(fēng)電機(jī)組預(yù)應(yīng)力混凝土塔筒與基礎(chǔ)結(jié)構(gòu)設(shè)計(jì)標(biāo)準(zhǔn)
- 小學(xué)語文閱讀教學(xué)落實(shí)學(xué)生核心素養(yǎng)方法的研究-結(jié)題報(bào)告
- 一年級(jí)的成長歷程
- 2024年南京鐵道職業(yè)技術(shù)學(xué)院高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 正月十五元宵節(jié)介紹課件
評(píng)論
0/150
提交評(píng)論