| ALLEN--OneNet魔力...'s profileOneNet魔力小子BlogListsGuestbook | Help |
OneNet魔力小子微軟最新技術趨勢 |
||||||||||||||||||||||||||||
|
May 06 進行UI介面的單元測試 實作與工具篇 (OneNet魔力小子)本篇是主要在介紹 UI(使用者介面)的單元測試,在寫單元測試中最讓人頭痛的就是 UI層很難進行測試,尤其是UI層與邏輯層的程式耦合度很高的程式專案,而 NUnitForms 就是用來解決這個問題的良好工具,NUnitForms是作為NUnit的擴展,他主要的用途是專為Windows Forms應用程式的表單測試而設計的。 NUnitForms 可以跟 NUnit(單元測試)進行良好的配合機制,在撰寫NUnit單元測試的程式碼中,可以利用NUnitForms 的來跟Windows Form進行互動,過程中不需要再經由User(使用者)進行人工操作,因此可以用來模擬使用者操作UI的輸入,來進行接受性的單元測試,NUnit目前可以支援的控制項元素包含需多,如:Buttons, CheckBoxes, ComboBoxes, Labels, ListBoxes, RadioButtons, TabControls, TextBoxes, TreeViews, Context Menus, Forms, MenuItems, Modal Forms, Modal MessageBoxes, and the Mouse 。 下載NUnitForms,並安裝完成後,就可以新增一個程式類別專案,對NUnitForm.dll的參考引用,步驟如下: 在專案的參考節點上按右鍵進行參考引用 NUnitForm.dll 引用NUnitForms.dll檔後,在命名空間添加 上述步驟完成後,接下要在單元測試程式碼(NUnit)中針對將要進行測試的Windows Form(表單),需要執行類似下列語法來初始化。 這邊有個觀念需要先特別說明,在NUnitForms框架中,已經實作出很多測試表單(Windows Form)過程中,可以模擬的Control,因此在寫單元測試中,可以根據實際需要模擬的Control,進行宣告物件實體,例如要模擬表單的TextBox,就可以新建一個Object 為 TextBoxTester,模擬Button按鈕,就可以新建立一個 ButtonTester,仔細觀察你會發現,結尾都是Tester居多,而這些模擬的Control都是延自一個基類為 ControlTester。而每個 ***Tester都有提供一些方法與屬性,來供程式呼叫與使用,以下特別撰寫這幾個範例: ex1: ex2:
ex2: ex3: [案例分享] 現在在專案裡新增一個Windows Form,並取名為form1
在form1,從工具項拖拉Button、TextBox、Label控制項到 form1 裡 在button1.Click() (雙點擊button1),撰寫下列語法: 1: private void button1_Click(object sender, EventArgs e) 2: {3: //TextBox輸入字串顯示至Label 4: this.label1.Text = this.textBox1.Text; 5: }在專案裡,在新增一個Class,並命名為 NUnitFormsTest.cs,如下圖: 在專案裡參考引用 unit.framework.dll 與 NUnitForms.dll 在NUnitFormsTest.cs 引用下列命名空間 using NUnit.Framework;using NUnit.Extensions.Forms;撰寫下列整合NUnitForms程式碼 1: // [TestFixture] 標示此 Class 為 NUnit 測試用途 2: [TestFixture] 3: public class NUnitFormsTest 4: { 5: 6: // [Test] 標示此 Method 為 NUnit的測試方法 7: [Test]8: public void Test01_ButtonClick() 9: {10: //new form1 object and Show form1 11: form1 form = new form1(); 12: form.Show(); 13: 14: TextBoxTester txtTest = new TextBoxTester("textBox1"); 15: //模擬使用者 KeyIn 值 16: txtTest["Text"] = "輸入值測試"; 17: 18: ButtonTester btnTest = new ButtonTester("button1"); 19: //呼叫Button.Click() 20: btnTest.Click(); 21: 22: LabelTester lblTest = new LabelTester("label1"); 23: 24: //進行測試 25: Assert.AreEqual("輸入值測試", lblTest["Text"].ToString(), "Error Value Not Mapping.."); 26: 27: } 28: }在此省略掉NUnit的技巧,如果改天還有時間,我將會補齊這塊NUnit測試技巧。 March 11 從 ANSI 到 OEM 的字元轉換包含延伸字元,也就是在 ASCII 字元範圍 32 (space) 到 126 (~) 之外的字元,包括國際字元如 "a,"、"c"、"e"、"n" 和 "s" ,在 SQL Server 中需要特別處理。 在結果集合中的延伸字元表示倚賴使用中的字碼頁。字碼頁是電腦用來解譯及顯示資料屬性的字元集合。字碼頁通常對應到不同的平台及語言,並且被使用在國際化應用程式。例如,ASCII 值 174 會在一個字碼頁以 R 符號出現,而不是在另一個字碼頁以 chevron c 字元出現。 一般來說,字碼頁被分成 ANSI 字碼頁及 OEM 字碼頁。用高數字的 ASCII 值表示國際字元的 ANSI 字碼頁被使用在 Windows。用高數字的 ASCII 值表示畫直線及標點符號字元的 OEM 字碼頁被設計成在 MS-DOS 中使用。 當資料輸入 SQL Server 資料庫時,在本機 (用戶端) 電腦上的 SQL Server 設定指定資料是以 ANSI 或是 OEM 格式儲存。這選項是以在 [SQL Server 用戶端組態] 對話方塊內的 [DB 程式庫選項] 上的 [ANSI 到 OEM 自動轉換] 選項來指定。按一下 [開始] 功能表的 [程式集] 中的 Microsoft SQL Server 7.0 或更新的 [用戶端網路公用程式] 可取得此對話方塊。(關於 ANSI 到 OEM 自動轉換的更詳細資訊,請參考 SQL Server 文件。) 此選項預設是為 SQL Server 用戶端選取的,是能夠造成資料從高數字 ASCII 字元轉換到 OEM 字元的選擇。例如,如果 OEM 轉換選項被設定並且您在資料行中輸入 "Gunther" 名稱,然後儲存資料列,則字元 "u" 會在列存入資料庫之前轉換成另一字元。 您在「查詢設計工具」中所建立的查詢結果受 [SQL Server 用戶端組態] 對話方塊內的 OEM 轉換選項設定組合的延伸字元儲存格式所影響。其根據下列這些變數:
一般來說,如果資料以 OEM 格式儲存,您應該設定 OEM 轉換選項,以使資料適當地顯示並且使您能夠搜尋它。如果資料是以 ANSI 格式儲存 (也就是說,它不會被轉換至 OEM 格式),但您已經設定 OEM 轉換選項,則資料將不會被適當地顯示並且您不能夠搜尋它。 若要決定資料是否以 OEM 格式儲存,您可以使用查詢來顯示資料表的內容或您工作的資料表。如果延伸字元不正確地出現,則 OEM 轉換設定可能會錯誤。關閉查詢與 Access 專案,更改在 [SQL Server 用戶端組態] 對話方塊的設定,然後再次開啟 Access 專案與查詢。 October 22 ADO.NET 觀念與實作篇-如何將DataSet裡的DataTable複製一份到另一個DataSet 在ADO.NET 的物件架構模型中,分為兩大部分,一是 DataProvide 資料提供者,二是DataSet(離線環境),DataSet 資料集是一種存在記憶體裡的物件,您可以把它當作記憶體的關聯式資料庫來處理,DataSet資料集架構裡大致包含Tables、Relations、ExtendedProperties,Tables就是在關聯式資料庫的資料表集合體,Relations 記錄著Table與Table之間的關連性,如父/子資料表,ExtendedProperties您可以在其中放置自訂資訊,如用來產生結果集的 SELECT 陳述式,或產生資料的時間,架構圖如以下 而今天的主體將是要說明如果將一個DataSet資料集(再強調一次,把它當作記憶體裡的一個資料庫)的DataTable(資料庫裡的Table),複製到另外一個DataSet的Table裡,在Sql server的T-SQL的寫法我們通常可以利用如下語法: 但今天我們將利用一個類別成員DataTableReader,在ADO.NET實作 Table 在 Dataset與 DataSet 之間如何有效率運作機制… 首先建立一個Windows Form的專案,Form的設計畫面大致如下,兩個按鈕Button和兩個DataGirdView和兩個DataSet資料集,第一個button(btnFirTable)是載入DataSet1裡的Table到DataGridVIew1,另外一個button(btnCpTble)是複製第一個button產生的Table到另外一個Dataset2裡畫面設計圖如下: 接下來在第一個Button(btnFirTable)的click寫下以下程式碼:
private void btnFirTable_Click(object sender, EventArgs e)
{
//建立連線物件
SqlConnection conn;
conn = new SqlConnection("Data Source=localhost;integrated security=sspi;Initial Catalog=AdventureWorks");
SqlDataAdapter sda=new SqlDataAdapter("select * from Sales.Customer",conn);
//將資料填入 資料集 dataSet1
sda.Fill(dataSet1, "table");
//將資料結果繫結至DataGridView1
dataGridView1.DataSource = dataSet1.Tables["table"];
//釋放物件
conn.Close();
sda.Dispose();
} 接下來也是主要的關鍵語法,在第二個Button(btnCpTble),撰寫下列語法:
private void btnCpTble_Click(object sender, EventArgs e)
{
System.Data.DataTableReader drt = dataSet1.CreateDataReader();
dataSet2.Load(drt, LoadOption.OverwriteChanges, "table1");
dataGridView2.DataSource = dataSet2.Tables["table1"];
}按下第二個Button(btnCpTble),執行結果如下圖: 整個過程就完成實作table在兩個dataset之間複製與移動… 在應用程式開發領域中,將近有七成以上都跟資料庫有關係,而微軟的開發平台策略上,.NET技術架構中,ADO.NET 就是將所有跟資料處理相關的功能封裝成一個類別庫,因此如果可以將ADO.NET核心觀念與實作掌握住,甚至更可以把微軟的主要資料庫SQL SERVER的技術研究徹底,哪麼您可以稱為一個微軟技術專家了。 October 14 Microsoft Silverlight 2 正式發布Microsoft Silverlight 2今天終於向用戶發布使用。 October 09 ASP.NET AJAX Framework 觀念與實作篇-PageMethods 和 WebService 有時我們在開發WEB應用程式專案時,常常需要去執行SERVER(伺服器)端的程式碼,但我們知道在如果每次只是需要執行一小段程式碼(函式),就需要將整個網頁去POST REQUET,很浪費資源,所以今天我們將利用AJAX CLIENT LIBRARY(JAVA SCRIPT LIBRARY)在瀏覽器端局部呼叫SERVER端的程式函式,有兩種做法,分別為 PageMethods做法 1. 新增一個內含 ScriptManager 控制項的 default.aspx 網頁(從工具箱拖曳ScriptManager控制項至default.aspx頁面) 2. 在ScriptManager的控制項屬性視窗中,將EnablePageMethods屬性選取為True,很重要的步驟之一。 3.在default.aspx的後製程式碼中,寫一個類別靜態成員方法,此方法一定要宣告為靜態(static)。 public static string CallPageMethods(string Str)
{
return "OneNet魔力小子..CallPathMethods";
}需要在此宣告屬性WebMethod Attribute,用來支援Client端的JavaScript程式碼,如以下宣告標示 4.切換到原始檔頁面,撰寫JavaScript腳本語法去呼叫 剛剛上面撰寫的類別成員靜態方法 CallPageMethods。 5.在原始檔頁面,放入一個HtmlInuptButton ,語法如下: <input id="Button1" type="button" value="button" onclick="ClientCallPgMds();" /> WebServices …下一篇,將完整介紹… October 07 ASP.NET AJAX Framework 觀念與實作篇-ScriptManager 和 ScriptManagerProxy在您安裝了 ASP.NET AJAX 1.0的TOOLKIT(擴充套件),就可以很不費任何力氣,甚至程式開發人員可以連一行JavaScript都不用撰寫,就可以輕鬆的享受AJAX的非同步傳輸,也是因為這樣在微軟在2007年初推出了ASP.NET AJAX FrameWork,我就深深的愛上它,也很認真的去苦苦專研,雖然WEB RIA的新時代也來臨了,身為追求技術的愛好者,當然又需苦命的埋頭苦讀,微軟的新技術SIVERLIGHT…,但根據多位微軟的技術專家前輩的研判RIA的高峰期可能快者還需一兩年,也或許更久…而至少AJAX也是目前的主流WEB應用。 在開發ASP.NET AJAX 的 PAGE頁面第一個過程就是需要從工具箱DRAG-DROP ScriptManager控制項 首先簡單的新增Button UserControl (檔名為BtnUserControl.ascx)和JavaScript檔案(檔名為JScript.js)
接下來在BtnUserControl.ascx從工具箱拖拉一個Button控制項,它主要是用途是按下後在client端產生警告訊息(alert),畫面與程式碼如下 <%@ Control Language="C#" AutoEventWireup="true"
CodeFile="BtnUserControl.ascx.cs"
Inherits="BtnUserControl" %>
<asp:Button ID="Button1" runat="server" Text="請按我"
OnClientClick="JavaAlert('OneNet魔力小子!!')" />
<!-- 去呼叫 JScript.js 檔案裡的 函式 JavaAlert() ></script> -->設定ScriptManagerProxy控制項的Scripts屬性為Jscript.js,用來載入JavaScript的宣告函式 Jscript.js的程式畫面
再來在預設Default.aspx從工具箱拖曳一個UpdatePanel控制項至頁面, 原理: October 06 VISTA開發ASP.NET 3.5無法"在瀏覽器中檢視" 這幾天因為某些原因把我筆電的作業系統從SERVER 2003 OS改成VISTA OS,然後再安裝VISUAL STUDIO 2008和SQL SERVER 2005 DEVELOPER的開發環境,也安裝了Virtual PC 2007,掛載了SERVER 2003、VISTA、XP OS後,花了好多時間,今天總算整個安裝完也更新相關的SERVICE PACK,在很開心的情況下,用STUDIO .NET 2008把之前的ASP.NET WEB SITE的專案打開,然後在DISIGN PAGE去執行"在瀏覽器中檢視"卻出現了以下畫面 我就去找尋很多方式以及google搜尋相關網頁,卻找不到相關資源,可是我整個環境都是最乾淨的卻一直出現這個問題,於是我就自己開始try了,我把http://localhost:2410/FirstAjax/Default.aspx改成http://127.0.0.1:2410/FirstAjax/Default.aspx卻可以正常檢視畫面,還好以前我對網路和系統還算熟悉,開始從NETBIOS名稱解析的過程去尋找問題,去找了VISTA的hosts檔案(C:\Windows\System32\drivers\etc下),打開後發現檔案的內容多了一行解析
September 29 重新出發 OneNet魔力小子,重新定位生涯規劃,重新開放部落格(BLOG),專屬的部落格網址為:http://blog.netqna.com/ ,
點部落格的文章網址為http://www.dotblogs.com.tw/netqna/,而我的專屬信箱為 allen@netqna.com ...將來此部落格將盡量會多技術文章方向邁進...
June 09 Linux雷聲大雨點小 微軟、Symbian無須擔心6月8日消息,微軟和諾基亞的官員表示,谷歌和其它機構在手機產業推廣開放源代碼軟件的計劃並不新鮮,不會造成太大的影響。 據國外媒體報道稱,谷歌正在大力推廣其基於Linux的Android手機平台,並已經得到了業界30多家大公司的支持。 Linux可能會改變手機產業的遊戲規則,因為它可能削弱手機運營商對它們支持的應用軟件的控制力度。它還使手機廠商和第三方應用軟件開發商在市場方向和流行趨勢方面有更大的話語權。微軟和Symbian可能會失去許可收入。 但是,這些情況還需要很長的時間才會發生。Symbian北美區總經理傑瑞·潘納格羅西說,我們對此並不感到擔心。 市場調研廠商Canalys表示,適用於智能手機的Linux操作系統存在已經好多年了,但只獲得了5%的市場份額。Symbian擁有65%的智能手機市場份額。Symbian是一家合資企業,諾基亞是最大的股東,其它股東還包括索尼愛立信、松下、三星、西門子;微軟Windows Mobile的市場份額為13%,其次是RIM的10%、蘋果的7%。 但是,谷歌今年公佈Android使Linux獲得了很大的支持。Verizon Wireless上個月宣佈支持LiMo,也必將有力地推動Linux在智能手機市場上的發展。 潘納格羅西將目前的手機產業與10年前的PC產業進行了比較。他說,當時人們認為Linux將超越Windows,但許多Linux解決方案提供商或者倒閉,或者被廉價收購了。 觀察人士表示,目前市場上約有40種不同的手機操作系統。業界官員稱這太多了,預計將最終減少到幾種。潘納格羅西說,手機市場將經歷一個大浪淘沙的過程,手機產業的平台數量過多了,它們不可能都能存活下去。 但潘納格羅西指出,Linux不會使這種情況得到改變。他說,日本手機運營商在2000年開始提供無線寬帶服務,它當時只支持兩種平台══Symbian和一個Linux版本,但Symbian獲得了70%的市場份額。潘納格羅西指出,「我們預計美國也會上演類似的一幕。」 微軟的Windows Mobile產品經理斯科特·洛克菲爾德也持相似的觀點。他說,Linux聯盟的數量甚至超過Linux手機。 Linux手機平台的支持者表示,Linux平台的吸引力在於應用軟件能夠在不同的手機和網絡上運行。但洛克菲爾德表示,實際情況並非如此,手機廠商和運營商會根據自己的需要對Linux進行調整,這就降低了兼容性,從而影響Linux的增長。洛克菲爾德稱,「我們沒有必要對Linux憂心忡忡。」 June 06 Silverlight 2 Beta 2功能透露 WPF框架兼容性增強 國外開發者博客(BLOG)消息,根據在Tech Ed大會上的公告,Silverlight 2的第二個測試版本將會在未來的一周內發佈,這個時間剛好與MIX08大會上透露的信息一致(Beta 1 版本發佈的一個季度後新測試版就能與大家見面,剛好是這周)。 Silverlight 2 Beta 2將會增加很多新功能,開發者透露了其中一些非常有趣的新細節。 ‧ 跨域訪問到Socket網絡支持的改進,Beta 2 改進了跨域名支持和安全性,WebClient 的上傳支持。 ‧ WCF雙向通信。有開發者已經研究了這個特性,不僅僅將它應用在chat-type 程序開發上,驅動將通信機制轉移到業務應用上。 ‧ TextWrapping in textbox ‧ 專門的Tap控制器。很多應用程序將會用到這個功能,對內置控件是個很好的補充。 ‧ Deep Zoom - Beta 2 引入了一種新的基於 XML 的文件格式的 Deep Zoom 圖片功能。 ‧ 大幅改善的WPF兼容性。新版本對WPF界面框架的支持是眾多開發者喜歡Silverlight的重要原因之一。即使用戶的 操作系統中並沒有安裝.NET框架,但只要安裝了大小為4MB左右的Silverlight 2 Beta1(或Beta 2)安裝包後,就可以成功運行使用.NET開發的Silverlight應用程序。Silverlight 2中的WPF UI框架與.NET基礎類庫均分別是WPF與.NET基礎類庫的一個兼容的子集,因此開發人員可以輕鬆地將Silverlight應用程序轉換成桌面. NET應用程序。這對於廣大開發者來說是一個重要賣點:一個團隊,兩個平台,一種主流技術的整合開發。 此外,Silverlight 2的新測試版本還會加強對可視化開發管理的控制,在LINQ to JSON,ADO.NET數據服務功能也會重大更新。新技術將會在北京奧運會和DNC網上在線直播中採用到。 隨同Silverlight 2 Beta 2同時發佈的還有Expression Blend 2.5和新版本的Deep Zoom Composer。這是個值得期待的夏天,更多的新功能將會逐漸與大家見面。 以上信息編譯自開發者博客,細節尚未證實,更多信息,請參閱微軟的官方說明。 May 28 我竟然眼淚掉下來 我回來台南故鄉也休息了一陣子,這陣子短暫的休息,讓自己平靜了許多,也更體會一點,不是衝得快就代表成功的機率較高,而是看誰有耐心有毅力也就是誰"續航力"較持久,因為深深的體會到需要"平衡才能夠走的長久",每件事情真的有很多角度與廣度...這個也在資深資訊前輩的部落格感觸很深切,引用近來體會很深的一個廣告....尤其是看完資訊資深前輩董大師的部落格後.........
New Mondeo 最新 TVCF 搶先看- 工作篇
在故鄉休息這段時間,不外乎就是看英文、研究程式,手機幾乎完全不想接,誰都不想見,不是我封閉,而是我只想好好陪我的家人,我幾乎把所有時間是完全用在陪陪最親愛的家人,對工作永遠最認真最負責的老爸按摩,也幫全天下最持家永遠為了家庭不顧一切得付出的媽媽按摩,也靜靜聽聽爸媽對我諄諄的教誨,也能感覺爸媽對我的期許與自責,爸媽我真的好愛您們,請原諒孩兒年輕的不懂事,沒有完成爸爸您以前的期許與盼望,讓您從期望到盼望再到失望,但爸媽我已經知道以前的不懂事,我早已很努力很努力的彌補以前的荒廢,我一定會證明已經不是以前惹事生非的壞孩子,我會慢慢去腳踏實地去完成您們對我的期許....隨然我心裡知道您們心裡偷偷高興我成長很多,只是您們不說,但您們不說代表我還有很多要改進,老爸老媽我會記住您們對我的叮嚀,我會開始多做事少說話,學會更穩重的處理事情.....
今天我睡不著覺,因為我明天要會台北了,繼續努力完成我對自己的重大期許與目標,但睡不著不是因為目標與期許,而是我真的好捨不得您們,您們知道嗎?雖然您們現在正在睡覺,今晚我好多念頭出現,好想不回台北了,但我知道要歷練要成長,我還是得暫離開您們,因為這樣我才學會獨立、學會抗壓、學會待人處事、學會面對挫折,爸媽我真的睡不著,因為我真的好愛您們....您們知道嗎?爸媽有時我真得好期望快點完成我對我自己的期許,雖然媽一直告訴我慢慢來,我知道你很努力,但我真的想達成哪天,親口大聲告訴您們,爸媽您兒子讓您很光榮的....爸媽您們等著.......... May 23 PHP5和SQL Server 2005開發環境 這幾天有個php程式設計師問我幾個問題,我在此整理主要兩個問題摘要,第一個,如何利用php5跟SQL SERVER2005的環境下,有效率的搭配;第二問題,PHP程式設計人員是否該轉向ASP.NET跑道?
魔力小子針對第一個問題,先在此示範如何擴充PHP對於SQL SERVER環境的配置與撰寫一個PHP5 & SQL SERVER 2005實例
配置: 可連結至此網站 http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3175669&SiteID=1 步驟一:將php_sqlsrv.dll 或 php_sqlsrv_ts.dll 放到PHP的擴充目錄(PATH)中(PHP\EXT). 實例PHP語法: <?php ---->完工........................................
再來針對第二個問題,這個網頁開發人員的觀點都不同,早期OneNet魔力小子也撰寫PHP4~5一段時間,但在 2001~2002間 微軟 .NET的出現,OneNet積極投入此技術平台中,也幾乎完全沒再繼續撰寫PHP,但不是因為PHP不成熟,而是OneNet我對新技術的渴望與追求,而且一投入後,就深深的愛上這個技術架構,如果要我回答此種問題,我只會給建議,就是如果您時間OK,當然強烈建議您多學一種技術,不論是.NET甚至另外類似的JAVA物件導向架構,畢竟物件程式橫行軟體開發界很長的時間了,但是相對於還有一種人,就是完全專研於PHP程式語法,寫得出神入化,OneNet也看過此種php高手的程式碼,也讓我非常得驚訝,可以把php寫得如此高深,因此還是回歸我以前引述得一片文章,不要在爭論與徘徊哪種比較好以及是否該花時間投入,因為在您爭論與徘徊的時間,您不知道已經學了多少.NET的觀念與技術,也或許您在PHP的領域也往另一個更高的境界了...,也在最後引述以前寫過得一片文章 PHP突出開源優勢要做Windows平台一等公民,也就是不論在LINUX平台(Apache)或微軟平台(IIS)都將更加積極完全支援PHP,不要忘了APACHE佔有率會高,很大因素也歸咎於PHP開發人員.........
May 21 C#語法比較時間大小三種技巧
(一)比較時間大小的測試 string st1="12:13"; string st2="14:14"; DateTime dt1=Convert.ToDateTime(st1); DateTime dt2=Convert.ToDateTime(st2); DateTime dt3=DateTime.Now; if(DateTime.Compare(dt1,dt2)>0) msg.Text=st1+">"+st2; else msg.Text=st1+"<"+st2; msg.Text+="\r\n"+dt1.ToString(); if(DateTime.Compare(dt1,dt3)>0) msg.Text+="\r\n"+st1+">"+dt3.ToString(); else msg.Text+="\r\n"+st1+"<"+dt3.ToString(); (二)計算兩個時間差值的函數,傳回時間差的絕對值: private string DateDiff(DateTime DateTime1,DateTime DateTime2) { string dateDiff=null; try { TimeSpan ts1=new TimeSpan(DateTime1.Ticks); TimeSpan ts2=new TimeSpan(DateTime2.Ticks); TimeSpan ts=ts1.Subtract(ts2).Duration(); dateDiff=ts.Days.ToString()+"天" +ts.Hours.ToString()+"小時" +ts.Minutes.ToString()+"分鐘" +ts.Seconds.ToString()+"秒"; } catch { } return dateDiff; } (三)執行計算DateTime1-36天=DateTime2的功能 TimeSpan ts=new TimeSpan(40,0,0,0); DateTime dt2=DateTime.Now.Subtract(ts); msg.Text=DateTime.Now.ToString()+"-"+ts.Days.ToString()+"天\r\n"; msg.Text+=dt2.ToString(); May 19 Silverlight 2今年發佈,但不能播放Flash 動畫格式 微軟內部的開發人員shish Thapliyal對外公佈了Silverlight 2 Web平台的最新消息,他確認Silverlight 2即將在今年度發佈,並且還確定它與Adobe的Flash視頻FLV不相容.
Silverlight 2.0 Beta 1最早對外公佈於MIX08,本季度還將發佈一個Beta2版本,它完全相容1.0版本,使用Silverlight 1.0開發的應用程式可完整地運行在2.0上,微軟對這些版本採取了相當寬鬆的版權策略.
值得特別注意的是,Silverlight 2.0並不支持Adobe Flash視頻的播放,版權問題是一個方面,另外微軟非常自信到認為找不到什麼理由去支持它.
Silverlight 2.0之後是什麼?是一個移動版本,同時Silverlight 3的計劃也已經出現,但目前尚未公佈任何測試版. 開源版 Silverlight - Moonlight 1.0發佈Silverlight 是微軟的Web技術開發環境,它基於.NET CLR建構的,它包含2D圖形系統和媒體回收引擎,同時還包含一系列標準.NET類別庫.但開源愛好者正在利用Silverlight建構另一個 "Silverlight Mono"計劃,那就是"Moonlight"(暫定名),它包含Silverlight的絕大多數技術,用於Unix平台,但省略了一部分組件.它對於 Silverlight來說是相對獨立的工程,並支持更多平台的開發. |
|
||||||||||||||||||||||||||
|
|