Q cat:
操作系統: 2000/xp
編程工具: vs.Net 2003 /c#
問題: 我想制作一個activeX控件或類似的東西,有用戶界面的,然後想在IE中使用,通過Vbscript與其進行數據交換,在以前好像可以使用vb就能做到,但是現在是vs.net 2003企業版,好像已經進化了,activeX成了老的技術,那vs.Net如何解決這種類似的問題?如果要使用c#來編程的話,具體如何操作?還要有界面。
A回答:
在C#中和ActiveX控件對應的是Windows控件庫(User Controls)。
在IE中激活Windows Forms控件可以分五步來完成:
* 創建Windows Forms控件;
* 創建一個包含對象標簽的Html文檔;
* 創建虛擬目錄,復制並設置權限;
* 配置代碼訪問權限;
* 運行該控件。
1. Windows Forms控件:SimpleControl.dll
幾乎所有的Windows Forms控件都可以用,但在這個例子裡,我們使用的是包含在.Net Framework SDK QuickStart Tutorial Creating Controls中的SimpleControl控件。
2. HTML文檔: SimpleControl.Html
接下來一步是生成內有一個對象tag的Html文檔,以激活Windows Forms控件。此外,還要加入一些腳本和輸入tag(input tags)到該控件的示范程序入口。
<object id="simpleControl1"
classid="http:SimpleControl.dll#Microsoft.Samples.WinForms.Cs.SimpleControl.SimpleControl"
height="300"
width="300">
<param name="Text" value="Simple Control">
</object>
對象tag:
classid包含兩個有趣的部分:導向控件庫的路徑和全名(fully qualified name),中間用“#”隔開。如果您熟悉ActiveX對象tag的話,您會發現我們沒有使用GUID。在Windows 表單中,路徑和全名(fully qualifIEd name)合並在一起的整體被用來當作唯一的識別符。
參數tag被用來設置控件的屬性:“name”參數是屬性名,而“value”參數則是屬性的值。
腳本:
<script>
function ChangeText() {
simpleControl1.Text = text1.value;
}
</script>
--------------------------------------------------------------------------------
<input type="text" id="text1">
<input type="button" value="Change Text" onclick="ChangeText()">
您可以寫一個腳本來獲得控件的程序入口,頁面上的按鈕和文本框已關聯到一個簡單的函數ChangeText,以設置該控件的text屬性。為了是修改的結果體現出來,控件必須重繪(調用invalidated()實現)。
完整代碼
下面是這個例子完整的Html代碼:
<Html>
<script>
function ChangeText() {
simpleControl1.Text = text1.value;
}
</script>
<body>
<p>Simple Control</p>