當(dāng)前位置:首頁(yè)>>開(kāi)發(fā)編程>>VS.NET>>新聞內(nèi)容
實(shí)現(xiàn)在IE中托管.NET的Windows Form
作者:勵(lì)志人生 發(fā)布時(shí)間:2004-9-6 9:53:07 文章來(lái)源:yesky
  如果曾經(jīng)使用Java開(kāi)發(fā)過(guò)Web應(yīng)用程序,你一定會(huì)對(duì)Java applets比較熟悉,這是一種基本上在瀏覽器中運(yùn)行的小型程序。當(dāng)瀏覽器加載包含有Java applets標(biāo)志的HTML代碼時(shí),Java applets就會(huì)執(zhí)行,網(wǎng)頁(yè)中的Windows Forms控件的運(yùn)行方式與Java applets相似。我們可以使用由Windows Forms技術(shù)提供的豐富的類開(kāi)發(fā)Windows Forms控件,然后在網(wǎng)頁(yè)中部署這些控件,當(dāng)瀏覽器加載這些網(wǎng)頁(yè)時(shí),就會(huì)執(zhí)行包含在Windows Forms控件中的代碼。

  .NET的偉大之處之一是它提供的與IE的無(wú)縫集成能力。例如,我們甚至能夠在用戶不知道的情況下從IE中激活一個(gè)Windows Forms控件。盡管利用了由.NET CLR提供的Code Access Security的所有功能,但這是在無(wú)需進(jìn)行注冊(cè)的情況下完成的。

  當(dāng)開(kāi)發(fā)Windows Forms控件時(shí),我們就通過(guò)繼承的方式擁有了Windows Forms類所提供的所有功能。例如,我們可以使用Windows Forms控件驗(yàn)證技術(shù)對(duì)用戶輸入的數(shù)據(jù)進(jìn)行廣泛的驗(yàn)證,同樣地,我們可以從窗體控件中調(diào)用遠(yuǎn)程Web服務(wù)。通過(guò)使用所有這些技術(shù),我們就能夠使用.NET平臺(tái)開(kāi)發(fā)豐富、功能強(qiáng)大的應(yīng)用程序。

  實(shí)現(xiàn)

  在這一部分,我們將學(xué)習(xí)如何創(chuàng)建簡(jiǎn)單的Windows Forms控件并將它托管在IE中。下面是激活I(lǐng)E中Windows Forms控件的5個(gè)步驟:

  ·創(chuàng)建Windows Forms控件。

  ·創(chuàng)建包含標(biāo)識(shí)Windows Forms控件的對(duì)象標(biāo)志的HTML文檔。

  ·配置正確激活控件所需要的虛擬目錄。

  ·配置代碼訪問(wèn)權(quán)限。

  ·運(yùn)行該控件。

  下面我們就來(lái)詳細(xì)地學(xué)習(xí)上面的每一個(gè)步驟。

  創(chuàng)建Windows Forms控件

  在這一步驟中,我們將創(chuàng)建一個(gè)簡(jiǎn)單的Windows Forms控件,它向用戶顯示“Hello World”信息。如政略所示,我們將首先創(chuàng)建一個(gè)名為HelloWorldControl的新Visual C# Windows Control Library項(xiàng)目。

  一旦創(chuàng)建項(xiàng)目后,我們將把缺省的用戶控件更名為HelloWorldCtl。我們將在用戶控件上添加一個(gè)名為lblMessage的標(biāo)簽控件和一個(gè)名為btnClick的按鈕。當(dāng)用戶點(diǎn)擊點(diǎn)擊按鈕時(shí),程序就會(huì)執(zhí)行下面的代碼,向用戶顯示一個(gè)簡(jiǎn)單的信息:

private void btnClick_Click(object sender, System.EventArgs e)
{
 lblDisplayMessage.Text = "Hello World";
}

  既然已經(jīng)創(chuàng)建了控件,下面我們來(lái)編譯該項(xiàng)目,并創(chuàng)建可執(zhí)行代碼。

  創(chuàng)建HTML網(wǎng)頁(yè)

  在這一步驟中,我們將創(chuàng)建一個(gè)HTML文檔,并在其中插入用來(lái)激活Windows Forms控件的對(duì)象標(biāo)志。HTML網(wǎng)頁(yè)如下:

<html>
<body>
<p>Hello World Control<br> <br></body>
<o(jì)bject id="HelloWorldControl1"classid="http:HelloWorldControl.dll#HelloWorldControl.HelloWorldCtl"
height="500" width="500" VIEWASTEXT>
</object>
<br><br>
</html>

  在對(duì)象標(biāo)志的classid屬性中,我們將路徑指定為控件庫(kù)組合體和控件的全名,控件的全名包括名字空間和控件類名字。從上面的代碼中可以看到,組合體和控件全名之間用#號(hào)隔開(kāi),這二個(gè)參數(shù)構(gòu)成了識(shí)別該控件的唯一控件標(biāo)識(shí)符。由于是唯一地由名字HelloWorldControl1標(biāo)識(shí)的,我們還可以針對(duì)該控件編寫(xiě)客戶端腳本代碼。

  配置虛擬目錄

  創(chuàng)建HTML代碼后,我們就可以創(chuàng)建一個(gè)名為HelloWorldControlHost的新虛擬目錄,并在其中添加控件(HelloWorldControl.dll)和HTML文檔(HelloWorld.htm)。除了配置虛擬目錄外,將虛擬目錄的執(zhí)行權(quán)限設(shè)置為Scripts也是非常重要的。如果將其執(zhí)行權(quán)限設(shè)置為Scripts & Executables,控件就不會(huì)被正確地激活。通過(guò)打開(kāi)虛擬目錄的Properties窗口,我們可以驗(yàn)證虛擬目錄的權(quán)限。

  配置代碼訪問(wèn)權(quán)限

  如果控件在企業(yè)內(nèi)部網(wǎng)上,它公正確地執(zhí)行,但如果要運(yùn)行來(lái)自互聯(lián)網(wǎng)網(wǎng)站上的控件,就需要對(duì)IE進(jìn)行配置或修改安全策略,使它能夠運(yùn)行。通過(guò)將托管網(wǎng)頁(yè)看成是受信任區(qū)段的一部分,就能夠做到這一點(diǎn)。為了將你的站點(diǎn)設(shè)置為受信任區(qū)段的一部分,我們可以在IE中通過(guò)選擇“工具”->“選項(xiàng)”->“安全”->“受信任的站點(diǎn)”,然后將你的站點(diǎn)添加到列表中,再點(diǎn)擊“OK”按鈕。這樣下次再瀏覽到該網(wǎng)頁(yè)時(shí),控件就會(huì)得到正確的執(zhí)行,因?yàn)橐呀?jīng)設(shè)置了互聯(lián)網(wǎng)許可。

  運(yùn)行控件

  要運(yùn)行控件,只要在瀏覽器中瀏覽托管該控件的HTML網(wǎng)頁(yè)即可。在顯示的HTML網(wǎng)頁(yè)中,如果點(diǎn)擊“Click Here”命令按鈕,控件就會(huì)如下圖所示顯示“Hello World”的消息。

  在這個(gè)例子中,我們主要演習(xí)了如何創(chuàng)建簡(jiǎn)單的Windows Forms控件,并在IE中托管它。


最新更新
·C#中使用Split分隔字符串的技
·VS2008開(kāi)發(fā)中Windows Mobile
·PC機(jī)和移動(dòng)設(shè)備上絕對(duì)路徑的
·C#程序加殼的方法(使用Sixx
·當(dāng)前上下文中不存在名稱Conf
·請(qǐng)插入磁盤(pán):Visual Studio 2
·用VS.NET讀取Flash格式文件信
·在ASP.NET中使用AJAX的簡(jiǎn)單方
·VS.NET 2005中常用的一些代碼
·安裝VS.NET 2005 SP1補(bǔ)丁全攻
相關(guān)信息
·C#中使用Split分隔字符串的技巧
·PC機(jī)和移動(dòng)設(shè)備上絕對(duì)路徑的獲取(C#)
·C#程序加殼的方法(使用Sixxpack)
·當(dāng)前上下文中不存在名稱ConfigurationManager的解決方法
·C#的支付寶Payto接口代碼
·C#實(shí)現(xiàn)窗口最小化到系統(tǒng)托盤(pán)
·解密QQ的MsgEx.db消息文件格式
·QQ的TEA填充算法C#實(shí)現(xiàn)
·C#用Guid獲取不規(guī)則的唯一值(標(biāo)識(shí))
·基于Windows Mobile 5.0的掌上天氣預(yù)報(bào)設(shè)計(jì)
畫(huà)心
愚愛(ài)
偏愛(ài)
火苗
白狐
畫(huà)沙
犯錯(cuò)
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛(ài)
棉花糖
海豚音
我相信
甩蔥歌
這叫愛(ài)
shero
走天涯
琉璃月
Nobody
我愛(ài)他
套馬桿
愛(ài)是你我
最后一次
少女時(shí)代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂(lè)
星月神話
心痛2009
愛(ài)丫愛(ài)丫
半城煙沙
旗開(kāi)得勝
郎的誘惑
愛(ài)情買賣
2010等你來(lái)
我叫小沈陽(yáng)
i miss you
姑娘我愛(ài)你
我們都一樣
其實(shí)很寂寞
我愛(ài)雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個(gè)傳說(shuō)
丟了幸福的豬
找個(gè)人來(lái)愛(ài)我
要嫁就嫁灰太狼
如果這就是愛(ài)情
我們沒(méi)有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開(kāi)之前離開(kāi)
不是因?yàn)榧拍畔肽?/a>
愛(ài)上你等于愛(ài)上了錯(cuò)
在心里從此永遠(yuǎn)有個(gè)你
一個(gè)人的寂寞兩個(gè)人的錯(cuò)