![二次開發(fā)教程_第1頁](http://file4.renrendoc.com/view11/M01/03/3F/wKhkGWW2DMmACyAUAAFCpPKssLU043.jpg)
![二次開發(fā)教程_第2頁](http://file4.renrendoc.com/view11/M01/03/3F/wKhkGWW2DMmACyAUAAFCpPKssLU0432.jpg)
![二次開發(fā)教程_第3頁](http://file4.renrendoc.com/view11/M01/03/3F/wKhkGWW2DMmACyAUAAFCpPKssLU0433.jpg)
![二次開發(fā)教程_第4頁](http://file4.renrendoc.com/view11/M01/03/3F/wKhkGWW2DMmACyAUAAFCpPKssLU0434.jpg)
![二次開發(fā)教程_第5頁](http://file4.renrendoc.com/view11/M01/03/3F/wKhkGWW2DMmACyAUAAFCpPKssLU0435.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第二篇AutoCADNET1章:AutoCADNET第二篇AutoCADNET1章:AutoCADNETAPI了解.NET框架。AutoCAD.NETAPI概我們在前一篇詳細講解了AutoCAD的開發(fā)工具-ObjectARX,毫無疑問以VC++為基礎的ObjectARX的開發(fā)功能是非常強大的,但是掌握VC++及VisualLisp等雖然方便易學,開發(fā)周期也比較短,但是,對執(zhí)行速度和性能要求都很高的解決方案或者復雜的程序,VBA和VisualLisp就難以勝任了。外包類(ManagedWrapperClass,使開發(fā)人員可在.NET框架下,使用任何支外包類(ManagedWrapperClass,使開發(fā)人員可在.NET框架下,使用任何支AutoCAD2008NETAPIC++相匹.NET.NETMicrosoft面向XMLWeb服務的平臺,它允許應用程序通過.NET框架是NET的最為重要的組件,它是一個可以構造、發(fā)布以及運行Web服務的開發(fā)環(huán)境。從概念上講,.NET框架平臺代表了一種嶄新的軟件開發(fā).NET框架平臺包含兩個方面的核心內(nèi)容:一個是運行時引擎(Runtime1-1NET1-1NETDimNameAsString="Hello"VisualBasic中,以是VB.NET訪問 EndTry1-2NET1-2NET1.3程序集和1-31-3戶處理AutoCAD程序級別的對象,如程序?qū)ο?、文檔對象等。中的類,就需要使用AutoCAD的命名空間。員時無需重復該名字空間的名字,C#usingusingusingusing 創(chuàng)建 創(chuàng)建使用.NETAPI對AutoCAD進行開發(fā)需要MicrosoftVisualStudio2005集成開MicrosoftVisualC#2005ExpressEdition(IDE)C#VisualC#2005ExpressEdition已經(jīng)通過Web下載(/express)免費提供。 1-520081-52008\AutoCADApplicationServices,EditorInput和Runtime命名空間:5)AutoCAD中被調(diào)用,需要在工程中添加定制的個屬性由Runtime命名空間提供,在類Class1中添加下列屬性和函數(shù)。例如: usingusingAutodesk.AutoCAD.EditorInput;5)在命令的執(zhí)行部分,我們要在5)在命令的執(zhí)行部分,我們要在命令行中輸出信息,可以通過Editor對象實現(xiàn),Editor類擁有訪問AutoCAD命令行的相關方法,它還包括選擇對象和其它一 Editored= 程序的加載和AutoCAD程序,默認路徑為C:\ProgramFiles\AutoCAD2008\acad.exepublicvoidHelloNet(){ed.WriteMessage("使用NET開發(fā)AutoCAD程序");}publicvoidHelloNet{}.1.6練AutoCAD的托管程序集為兩個文件: .1.6練AutoCAD的托管程序集為兩個文件: 第22.1用戶交第22.1用戶交互概環(huán)境中選擇所需要的點或?qū)嶓w對象,在ObjectARX中是通過一些列專有的全局Autodesk.AutoCAD.EditorInputEditor類,該類提Autodesk.AutoCAD.EditorInputEditor類,該類提Autodesk.AutoCAD.EditorInput命名空間。使用Editor類的GetXXX函數(shù)獲取用戶輸入的時候,需要傳入入結果保存在PromptResult或者其派生類對象中,如PromptDoubleResult,、首先要獲取當前激活文檔Editor對象 ed= PromptIntegerOptionspublicvoidGetData(){ PromptIntegerOptionsintOp=newPromptIntegerResultintRes;if(intRes.Status==PromptStatus.OK)//正常輸{intnSides=PromptIntegerResultValue屬性獲取用戶所輸入的PromptIntegerResultValue屬性獲取用戶所輸入的數(shù)據(jù)不再介紹,需要說明的是通過GetString獲取字符時,返回的結果保存在要求用戶獲取屏幕坐標點需要通過Editor類的GetPoint方法,在PromptPointOptions對象中設置提示字符串和其它的一些提示控制選項,將該類的staticpublicvoidPickPoint(){ (=={ed.WriteMessage("用戶按了取消ESC鍵/n"}}中可PromptXXXOptionsAllowYYY屬性來實現(xiàn),其中這里的中可PromptXXXOptionsAllowYYY屬性來實現(xiàn),其中這里的booltruefalse即可,2-2PromptXXXOptions類的限定屬 Autodesk.AutoCAD.Geometry.Point3d(0,0,0);resPt={ed.WriteMessage("選擇的點為: }}不同的PromptXXXOptions類可能具有不同的AllowYYY屬性,在使用2.2選擇集處Editor類提供了許多用于操作選擇對象的方法,如表2-3所示。2-3PromptSelectionResult不同的PromptXXXOptions類可能具有不同的AllowYYY屬性,在使用2.2選擇集處Editor類提供了許多用于操作選擇對象的方法,如表2-3所示。2-3PromptSelectionResult.SelectionSet類的例,通SelectionSet類的GetObjectIds()方法返回所有選中實體的對象ID的集合,ID就可以對實體進行操作,在后面的章節(jié)會加以介紹,本章只介紹選擇以GetSelection()為例說明對象選擇集的創(chuàng)建方法staticpublicvoidSelectEnt(){SelectionFilterSelectionFilter對象實例的時候需要一個TypedValue的數(shù)組。SelectionFilterSelectionFilter對象實例的時候需要一個TypedValue的數(shù)組。屬性是一個16位整型數(shù)據(jù),它指明TypedValue.Value屬性的數(shù)據(jù)類型,而如果只選擇當前的塊定義,可以用下面的代碼來創(chuàng)建過濾器 SelectionFilterfilter=newSelectionFilter(filList); {intnCount=SS.Count;ed.WriteMessage("選擇了{0}個實體 ,}}2.3練 2.3練 { // ed.GetSelection(selectionOp,filter);{intnCount=SS.Count;ed.WriteMessage("選擇了{0}個塊 ,}}((所有PromptXXXOptions類都具有相同的AllowYYY屬性,其中((所有PromptXXXOptions類都具有相同的AllowYYY屬性,其中()TypedValue.TypeCode屬性是一個323AutoCAD數(shù)據(jù)庫架構AutoCADAutoCADAutodesk.AutoCAD.DatabaseServices命名空間,AutoCADDatabase類表示,可以通過以下語句獲 Databasedb= 命名對象詞典主要包含四類詞典:組詞典(ACAD_GROUP),MLINE線型詞典記錄保存在層表中,實體必須保存在塊表記錄中,從中我們不難看出數(shù)據(jù)庫3-1AutoCAD數(shù)據(jù)庫的構事務介紹3-1AutoCAD數(shù)據(jù)庫的構事務介紹StartTransactionCommit()方法結束需要通過Dispose方法顯式地釋放。Databasedb=3-1 OpenMode.ForRead)asBlockTable;3-1 OpenMode.ForRead)asBlockTable; {//}catch(Autodesk.AutoCAD.Runtime.Exception{}{//}的ObjectId,對象ID僅存在于其所在的數(shù)據(jù)庫從內(nèi)存的ObjectId,對象ID僅存在于其所在的數(shù)據(jù)庫從內(nèi)存中產(chǎn)生到數(shù)據(jù)庫被刪除之間并且如果操作多個數(shù)據(jù)庫,對象ID在多個數(shù)據(jù)庫之間都是唯一的每種符號表只能存儲指定類型的記錄,例如,層表LayerTable只能保存層表記錄(arab文字樣式表(TextStyleTable)a(iabl(Cabl(prabataItem–用于從指定的符號表中通過字符關鍵字獲取layerId= trans.AddNewlyCreatedDBObject(layerTblRecord, publicvoidCreateLayer(){Databasedb trans.AddNewlyCreatedDBObject(layerTblRecord, publicvoidCreateLayer(){Databasedb= {//NewLayer層是否if{layerId=}{//NewLayer layerTblRecord.Name="NewLayer";//layerId=layerTbl.Add(layerTblRecord);}練(1)在AutoCAD中使用block命令定義的塊 練(1)在AutoCAD中使用block命令定義的塊 ((}catch(Autodesk.AutoCAD.Runtime.Exception{}{//}}第4第4實體實體,BlockTableRecordAppendEntityBlockTableRecordbtr=//BlockTableRecordbtr=publicvoidCreateCircle(){Databasedb=//使用"using",結束是自動調(diào)用事務的 { (BlockTable)(trans.GetObject(db.BlockTableId,OpenMode.ForRead)); Point3dcenter=newPoint3d(10,10,0);circle.ColorIndex=1;}}4.2對象標DWG文件中的每一個實體都有一個唯一的標識符,稱為句柄,用4.2對象標DWG文件中的每一個實體都有一個唯一的標識符,稱為句柄,用的publicvoidOpenEnt(){ PromptEntityOptionsentOps=newPromptEntityOptions("PromptEntityResultentRes;{}4.3類型識Entity派生的,所以當打開一個實體對象時,經(jīng)常需要判斷其類4.3類型識Entity派生的,所以當打開一個實體對象時,經(jīng)常需要判斷其類 轉換操作;但是,如果轉換不可行,asnullif(entisif(entisObjectIdobjId=Databasedb=HostApplicationServices.WorkingDatabase; {Entityent=trans.GetObject(objId,asEntity}ed.WriteMessage("修改實體的顏色}4.4實體屬()0~256的顏色4.4實體屬()0~256的顏色色如表4-1:4-11Red(紅2Yellow(黃3Green(綠4Cyan(青5Blue(藍if(entis{aLine.ColorIndex=1;}{cir.ColorIndex=2;}4-2AutoCADLinetypeTableRecord來4-2AutoCADLinetypeTableRecord來示 //OpenMode.ForRead)asLinetypeTable;確保DOTOpenMode.ForRead)asLinetypeTableRecord;0(BYBLOK2(BYLYE2(0~2566Magenta(紫紅7WhiteorBlack(白采用數(shù)據(jù)庫的當前線型值,此值存在CELTYPE系統(tǒng)變量中。4.5塊定義采用數(shù)據(jù)庫的當前線型值,此值存在CELTYPE系統(tǒng)變量中。4.5塊定義和兩部分。塊定義就是在塊表中的一條塊表記錄BlockTableRecord,我們使用//OpenMode.ForRead)asLinetypeTable;確保DOTOpenMode.ForRead)asLinetypeTableRecord;//{//定義函數(shù)的返回值ObjectId{//定義函數(shù)的返回值ObjectIdDatabasedb=// { (BlockTable)trans.GetObject(db.BlockTableId,OpenMode.ForWrite);if{過塊名獲取塊對應的ObjectId}{Circlecircle=newCircle(center,MTexttext=newMText();text.Location=center;text.ColorIndex=2;{{ PromptPointResultptRes;Point3dptInsert; newBtr.Origin=center;blkObjId=bt.Add(newBtr);//返回塊對應//通知事務新創(chuàng)建了對象trans.AddNewlyCreatedDBObject(text,true);}}return}{}{ptInsert{}{ptInsert=newPoint3d(0,0,}Databasedb="using" { (BlockTable)(trans.GetObject(db.BlockTableId,OpenMode.ForWrite)); =//通知事務新創(chuàng)建了對象trans.Commit();//提交事務}}4.6練可 運算符用來判斷是否是所指4.6練可 運算符用來判斷是否是所指定的對象類型,使 if(entis {aLine.ColorIndex=1;} {cir.ColorIndex=2;}(第5了解結果緩沖ResultBuffer。(XData第5了解結果緩沖ResultBuffer。(XData5.1ResultBuffer對象時需要提供一個數(shù)據(jù)對,每個數(shù)據(jù)對包含一個數(shù)據(jù)類型描述和Autodesk.AutoCAD.DatabaseServices.TypedValue類的實例。TypeCodeResultBuffer實例的使用范圍,例如,適用于擴展記錄定義的TypeCode值就不適合于XData。Autodesk.AutoCAD.DatabaseServices.DxfCode枚舉類型定義的碼值描述了ResultBuffer可能的數(shù)據(jù)類型。TypeCodeResultBuffer實例的使用范圍,例如,適用于擴展記錄定義的TypeCode值就不適合于XData。Autodesk.AutoCAD.DatabaseServices.DxfCode枚舉類型定義的碼值描述了ResultBuffer可能的數(shù)據(jù)類型。ValueTypeCode指明的類型。ResultBufferTypedValue數(shù)組來創(chuàng)建一個ResultBufferResultBuffer(XDataDBObjectXData屬性獲取或設置擴展數(shù)據(jù)。每一組均以一個互不相同的注冊應用程序名開頭,擴展數(shù)據(jù)XData所支持的不同組碼對應不同類型的信息,各個組碼的說明如表5-1所示:DXF組碼resBuf.Add(newTypedValue((int)DxfCode.Real,20.0));resBuf.Add(newTypedValue((int)DxfCode.Int32,5)); resBufnewResultBuffer(newTypedValue((int)DxfCode.Text,"開發(fā)部門))asRegAppTable;if{appTblRcd.Name="MyAppName";}{Editored=PromptEntityOptions{Editored=PromptEntityOptionsentOps=newPromptEntityOptions("選擇PromptEntityResultentRes;if(entRes.Status!={}ObjectIdobjId=using(Transactiontrans={OpenMode.ForWrite)asRegAppTable;if{appTblRcd.Name="MyAppName";}歷器IEnumerator(在歷器IEnumerator(在System.Collections命名空間中),開發(fā)者需要借助遍歷器{Editored=PromptEntityOptionsentOps=newPromptEntityOptions("選擇if(entRes.Status!=PromptStatus.OK){ed.WriteMessage("選擇對象失敗,退出ResultBufferresBuf=newResultBuffer();//newresBuf.Add(newTypedValue(1001,"MyAppName"));//注名resBuf.Add(newTypedValue(1000工程部"));//部門resBuf.Add(newTypedValue(1040,2000.0));//薪水ent.XData=resBuf;}}記住擴展數(shù)據(jù)(XData)可以很方便的添記住擴展數(shù)據(jù)(XData)可以很方便的添加用戶自定義的數(shù)據(jù),這對于輕量5.2詞AutoCAD中的詞典是一般的容器對象,用于存儲非圖形對象派生自}Databasedb=using(Transactiontr={Entityent=if(rb!=null){while(iter.MoveNext()){}}}}1~31~369表組值10386090140170210NOD.SetAt("myDictionary",newDdic);DDictioary{using(Transactiontrans={DBDictionary; mgrXRec.Data=DBDictionaryNODDBDictionary;DBDictionaryNODDBDictionary;{//copyrightDict=}{//在NOD下創(chuàng)建COPYRIGHT詞典copyrightDict=newDBDictionary();NOD.SetAt("COPYRIGHTcopyrightDict);}//copyrightDict"author"{authorDict=}{authorDict=new"{Editored={Editored=using(Transactiontrans={//copyrightDict.SetAt("Author",authorDict);}{authorRec=}{authorRec=newXrecord();TypedValue((int)DxfCode.Text,authorDict.SetAt("AuthorInfo",authorRec);}}}的擴展詞典DBDictionary的ObjectId,借助這個ObjectId通過事務可以將DBDictionary對象打開,并編輯詞典中的擴展數(shù)據(jù)。{Editored=ed.WriteMessage("創(chuàng)建對象擴展詞典DBDictionaryNOD=//COPYRIGHTDBDictionarycopyrightDict=//AuthorDBDictionaryAuthorDict=XrecordauthorXRec=(Xrecord)trans.GetObject(AuthorDict.GetAt("AuthorInfo"),ResultBufferresBuf=authorXRec.Data;TypedValueval=resBuf.AsArray()[0];}}PromptEntityOptionsentOps=newPromptEntityOptions("選擇PromptEntityOptionsentOps=newPromptEntityOptions("選擇if(entRes.Status!=PromptStatus.OK){}Databasedb={OpenMode.ForWrite)asDBObject;BlockReferenceblkRef;{blkRef=objas}{}//創(chuàng)建對象的擴展詞典DBDictionaryextensionDict=//XrecordxRec=new{Editored=ed.WriteMessage("獲取對象擴展詞典信息PromptEntityOptionsentOps=newPromptEntityOptions("選擇if(entRes.Status!=PromptStatus.OK){}Databasedb=xRec.Data=newnewTypedValue((int)DxfCode.Real,1200.0),//薪水newTypedValue((int)DxfCode.Text,"技術部"));//部門//在擴展詞典中添加擴展記錄trans.AddNewlyCreatedDBObject(xRec,true);}}{{OpenMode.ForWrite)asDBObject;BlockReferenceblkRef;{blkRef=objas}{}DBDictionaryextensionDict=XrecordEmpXRec=ResultBufferresBuf=EmpXRec.Data;TypedValueval=resBuf.AsArray()[0];val=resBuf.AsArray()[1];val=resBuf.AsArray()[2];}}5.3練()命名對象字典就是所有字典的根目錄,可以通過數(shù)據(jù)庫的NamedObjectsDictionaryId屬性通過事5.3練()命名對象字典就是所有字典的根目錄,可以通過數(shù)據(jù)庫的NamedObjectsDictionaryId屬性通過事務獲(()每個對象都可以有一個擴展字典,擴展字典可以容納任意的DBObject對象,包括實6用戶通過APIAutoCAD6用戶通過APIAutoCAD空間中包含了AutoCAD中的特性對話框,利用系統(tǒng)提供的界面類可以開發(fā)與加載程序時候進行CommandClass來實現(xiàn),所有的托管程序都可以使用這些特性,但是,它們的優(yōu)當AutoCAD加載程序時,它會查詢程序的程序集(assembly)是否有ExtensionApplication自定義特性,如果它找到這個特性,AutoCAD會把 ExtensionApplication特性所關聯(lián)的類型作為程序的入口點,如果沒有找到ExtensionApplication特性,AutoCADIExtensionApplication接口的ExtensionApplication特性所關聯(lián)的類型作為程序的入口點,如果沒有找到ExtensionApplication特性,AutoCADIExtensionApplication接口的IExtensionApplication接口的實現(xiàn),AutoCAD還查詢程序的程序集CommandClassCommandClass特性的實IExtensionApplicationCommandClassAutoCAD了Initialize()和Terminate()方法,因為托管程序不能被自動卸載,所以TerminateAutoCAD退出時才被調(diào)用。如果你不需要執(zhí)行初始化或終止{publicclass{{}{}} ExtensionApplication ExtensionApplication 6.2自定義上下文上下文菜單,也叫快捷菜單,AutoCAD.NETAPI本身提供了一套處理上下Autodesk.AutoCAD.Windows命名空間有一個名為ContextMenuExtension的類,該類負責上下文菜單中添加定制的菜單項,而原菜ContextMenuExtension中包含菜單項,所包含的菜單項用Autodesk.AutoCAD.Windows.MenuItemClick事件來指{using(DocumentLockdocLock={創(chuàng)建完菜單項后,調(diào)ContextMenuExtensionMenuItems屬性Add創(chuàng)建完菜單項后,調(diào)ContextMenuExtensionMenuItems屬性Add法將菜單項添加到的ContextMenuExtension對象實例中,最后通過調(diào)用類的AddDefaultContextMenuExtension()方法將創(chuàng)建的自定義上下文菜單添加到系{m_ContextMenu.Title="我的自定義菜單";Autodesk.AutoCAD.Windows.MenuItemmi;=Databasedb={OpenMode.ForRead)asBlockTable;BlockTableRecordbtr=Circlecir=newCircle(newPoint3d(10,10,0),Vector3d.ZAxis,100): =1;trans.Commit();}}}通過調(diào) 類自定義上下文菜單的加載和刪除可以分別在IExtensionApplication通過調(diào) 類自定義上下文菜單的加載和刪除可以分別在IExtensionApplicationInitialize()和Terminate()實現(xiàn)函數(shù)中完成,這樣可以在程序初始化過程中加{}{}{{}}mi.Click+=MyMenuItem_OnClick;}類的()6.3有模式窗要通過AutoCADNETAPI中實現(xiàn)自定義的窗體,可以直接對.NETSystem.Windows.Forms中的類進行擴展,Form.ShowDialog方法來顯類的()6.3有模式窗要通過AutoCADNETAPI中實現(xiàn)自定義的窗體,可以直接對.NETSystem.Windows.Forms中的類進行擴展,Form.ShowDialog方法來顯示對話框,而是應該調(diào)用Autodesk.AutoCAD.ApplicationServices.Application類的ShowModalDialog方法來ShowModelessDialog方法來顯示自定義的無模式AutoCADForm.ShowDialog可能會導致不可預知行界面布局設計MyModalForm中我們通過按鈕實現(xiàn)從當前繪圖環(huán)境中6-1{Databasedb=on(Circle.GetClass(typeof(Circle)),m_ContextMenu);Editored={Editored={{ if(prEntRes.Status!=PromptStatus.OK)thrownewSystem.Exception("錯誤或用戶取消ObjectIdid=Circlecir;if(objis{cir=objas}{thrownewSystem.Exception("選擇對象錯誤}tb_layer.Text=cir.Layer;tb_center.Text=cir.Center.ToString();}}{6.4自定義工具面板和無模6.4自定義工具面板和無模式Autodesk.AutoCAD.Windows命名空間中的類除了提供線型和顏色之類的面板及面板集和狀態(tài)欄等Autodesk.AutoCAD.Windows.PaletteSet可以要基于UserControl類創(chuàng)建自定義的控件,假定自定義的控件名稱為ModelessForm,那么以下代碼就創(chuàng)建一個面板{Editored={if(palSet==publicvoidShowModalForm(){}}{}}{//palSet.Style=PaletteSetStyles.ShowTabForSingle;palSet.Style=PaletteSetStyles.NameEditable;palSet.Style=PaletteSetStyles.ShowCloseButton;palSet.Opacity=90;palSet.MinimumSize=newSystem.Drawing.Size(300,300);palSet.Add("我的頁面",myPageCtrl);}}{ed.WriteMessage("創(chuàng)建面板集錯誤}}6-2當用戶在自定義面板中直接拖動“拖拽創(chuàng)建”命令將執(zhí)行拖拽操作,要通過NETI6-2當用戶在自定義面板中直接拖動“拖拽創(chuàng)建”命令將執(zhí)行拖拽操作,要通過NETIs.tD.oDratrp{{ditored={而在自定義控件ModelessForm類中,需要添加而在自定義控件ModelessForm類中,需要添加“拖拽創(chuàng)建”標簽控件(名{{//System.Windows.Forms.DragDropEffects.All,newMyDropTarget());}using(DocumentLockdocLock={Convert.ToDouble(ctrl.tb_Salary.Text),pt);}}{ed.WriteMessage("失敗}}} 6.5選項對話框DisplayingOptionDialog的處理函數(shù),傳入到回調(diào)函數(shù)中的第二個參數(shù)是一個6-3{}AutoCADAutoCADApplicationprivatestaticvoidTabHandler(objectsender,{}{}{}{}MyOptionPage實例和一個TabbedDialogActionMyOptionPage實例和一個TabbedDialogAction中,我們使用的是OK。Class1static成員中,如下代碼:AutoCAD的選項對話框(可以通過“op”6.6練 (objectsender,{ TabbedDialogExtensiontabbedDialog=newpublicvoid{ =tb_Author.Text; }{ TabbedDialogExtensiontabbedDialog=new}e. ("我的屬性頁}(e. ("我的屬性頁}((7AutoCAD中的事AutoCAD7AutoCAD中的事AutoCAD事件C#中委托委托C#中的一種引用類型,類似于C/C++中的函數(shù)指針,與函數(shù)指針不同的AutoCAD事件上面第一個參數(shù)的類型為Object,它引用引發(fā)事件的實例,第二個參數(shù)從EventArgs類型派生,它保存事件數(shù)據(jù)。如果事件不生成事件數(shù)據(jù),則第二個參上面第一個參數(shù)的類型為Object,它引用引發(fā)事件的實例,第二個參數(shù)從EventArgs類型派生,它保存事件數(shù)據(jù)。如果事件不生成事件數(shù)據(jù),則第二個參數(shù)只是EventArgs的一個實例。否則,第二個參數(shù)為從EventArgs派生的自定(+=)來為事件附加事件處理程序。在下面的示例中,publisherRaiseCustomEvent的事件。請注意,訂 {//執(zhí)行指定操作}publicdelegatevoidEventHandler(Objectse
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京企業(yè)勞務派遣合同范例
- 買房土地合同范本
- 出租遠程電腦合同范例
- 商業(yè)土地托管合同范例
- 借款建房合同范例
- 中介裝修賣房合同范例
- 公寓套房轉讓合同范本
- 出租玩偶衣服合同范例
- 保證借款合同范例
- 買樓房合同范例
- 七年級信息技術上冊 第13課時 文件管理教案 科教版
- 2022年版義務教育語文課程標準題庫(教師教資培訓考試專用十三套)
- 英語新課標(英文版)-20220602111643
- 高考模擬作文“文化自信:春節(jié)走向世界”導寫+范文3篇
- 藥品管理法律制度的創(chuàng)新與探索
- 蘇教版三年級下冊數(shù)學計算能手1000題帶答案
- 邁瑞醫(yī)療 -醫(yī)療器械-從全球器械巨頭發(fā)展看邁瑞海外進擊之路
- 改善護理服務行動計劃總結報告
- 智慧農(nóng)業(yè)整體架構規(guī)劃設計方案
- 湖南汽車工程職業(yè)學院單招職業(yè)技能測試參考試題庫(含答案)
- 第2課+古代希臘羅馬(教學設計)-【中職專用】《世界歷史》(高教版2023基礎模塊)
評論
0/150
提交評論