如上所述,借助於StandardModuleAttribute特性和編譯器命令行 參數imports,筆者就可以實現VB.Net的全局對象和全局函數了。根據上
在這裡ScriptText屬性表示用戶設置的原始的VBA 腳本代碼,實際參與動態編譯的腳本代碼和原始設置的原始的VBA腳本代碼是不一致的。當用 戶修改了腳本代
生成腳本代碼文本VB.Net腳本引擎使用的動態編譯技術,而動態編譯技術的第一個部分就是代碼生成器 ,腳本大部分代碼都是由主程序提供的,因此其代碼生成器也就是將
譯腳本程序生成完整的VB.Net腳本代碼文本後就可以編譯了,為了 提高效率,這裡袁某定義了一個靜態myAssemblIEs的哈希列表變量,定義該變量的代碼如下
在初始化腳本引擎時程序會 在VBCompilerImports列表中添加默認的名稱空間Microsoft.VisualBasic。准備和執 行編譯的腳本代碼和
在這段代碼中,首先程序設置編譯器的參數,並為VB編譯器添加引用的程序 集信息,VB.Net編譯器有個名為imports的命令行參數用於指定全局名稱空間。用法為
在這段 代碼中,程序首先獲得腳本模塊的類型,在這裡類型全名為 “NameSpaceXVBAScriptEngIEn. mdlXVBAScriptEngine”
調用腳本腳本引擎前期完成的大量的工作就是為了最後能調用腳本,為 此筆者定義了、Execute函數用於調用指定名稱的腳本方法。定義該函數的代碼如下/// <
這裡函數參數為要調用 的腳本方法的名稱,不區分大小寫,調用腳本使用的參數列表,還有控制是否拋出異常的參 數。在函數裡面,程序遍歷myScriptMethods
延時調用和定時調用在Window全 局對象中,筆者使用System.Windows.Forms.Timer對象實現了延時調用和定時調用,由於定 時器對象屬於用
SetTimeout函數用於實現延時調用,它的參數為延時調用的毫秒數和腳本方 法名稱。在該函數中程序初始化一個名為myTimer定時器,設置它的Interva
映射應用程序主窗體Window全局對象定義了一些屬性用於映射應用程序主窗 體,筆者定義一個Title屬性應用映射主窗體的文本,其代碼如下/// <su
調用這些 方法,腳本能顯示簡單的消息框,顯示文件選擇對話框或文件夾選擇對話框以實現和用戶的 互換。當前這些函數都受到UserInteractive屬性的控制。
顯示消息框Window全局對象還定義了一些函數用於顯示一些消息對話框實現用戶互換。主要代 碼為/// <summary>/// 將對象轉化為用於顯
Panel控 件內部處理Paint事件來繪制背景圖片,此時即使控件的內容發生滾動,但繪制圖形使用的XY 坐標系仍然是以控件的左上角為原點的。而且由於無效矩形只
分析問題根據上述觀察到的現象可以知道WinForm.Net控件天生具有固定背 景的功能,其背景圖片是不隨控件的滾動而滾動。但Windows的默認滾動圖形的操作
當用戶用鼠標拖拽操作直接拖動滾動條時,控件 觸發的滾動事件過程如下:1.當用戶在滾動條上按下鼠標左鍵,開始 拖拽在時,控件觸發ThumbTrack類型的滾動事
然後筆者重載控件的 OnPaintBackground方法用於自定義繪制背景,其代碼如下。/// <summary>/// 自定義繪制控件背景/