Step by Step 用 C# 做出一個 GUI 的應用程式

這是我在 MSDN 網站上,看到的一篇文章
這篇文章一步一步的引領你如何使用 C# 來寫作 GUI 應用程式.
我覺得很實用
http://msdn.microsoft.com/library/en-us/dnmag01/html/winforms.asp
這篇文章主要是假設你有 Visual Studio.Net beta 1 整合開發環境來引領的
不過如果沒有 vs.net beta 1 的話,可以用 .Net Framework beta 1 來實作
如果使用 .Net Framework beta 2 的話,有幾點要注意:
1.編譯時所引用的 Dynamic Link Library 有變化
這是文章所建議的編譯方法,即 beta 1:
csc /target:winexe /out:Hello.exe /reference:System.dll
/reference:System.WinForms.dll /reference:System.Drawing.dll
/reference:Microsoft.Win32.Interop.dll Hello.cs
beta 2 的編譯方法改變了, 以下是我試出來的結果:
csc /target:winexe /out:Hello.exe /reference:System.dll
/reference:System.Windows.Forms.dll /reference:System.Drawing.dll Hello.cs
主要是 beta 2 將 DLL 的架構做了一些調整
2.using 的架構:
beta 1 是
using System;
using System.WinForms;
using System.Drawing;
而 beta 2 是
using System;
using System.Windows.Forms;
using System.Drawing;
其實這邊主要是跟 1 有關係,在beta 1 你可以試著尋找 System.WinForms.dll, 你將會發現有這麼一個檔案;但是在 beta 2 中卻沒有, beta 2 中只有System.Windows.Forms.dll.
3.MessageBox 類別有變化,其實應該也是因為架構調整的關係吧
beta 1:
MessageBox.Show (String.Format (“{0} is not ” +
“a valid image file”, fileName), “Error”,
MessageBox.OK | MessageBox.IconError);
beta 2:
MessageBox.Show (String.Format (“{0} is not ” +
“a valid image file”, fileName), “Error”,
MessageBoxButtons.OK,MessageBoxIcon.Error);
其他應該還有很多有所調整, 可能要參考 .Net Framework 的說明才能得知囉.

2001/8/30與saint閒聊

Saint said:
Dear, What’s your best program framework ?
—-
Ellery said:
I have no framework in VFP~
大多只是一些小技巧以及函數罷了
你這樣問,有點不知道該怎麼回答你
你想要知道什麼呢??
—-
Saint said:
不一定是VFP
我是說,你沒有想過,有關於framework這樣的事嗎?
從我把資料給物件化時,我就很想要做一個可以自動產生程式的一個framework
到了這裏,又做了menu object 之 後,這一個想法,一直在心中盤算!
所以我想要做一個是my style object framework ,You know ?
可是當我要去做時,發現並不簡單!所以想要聽聽看你的看法!
—-
Ellery said:
有想過~
但真的不簡單
1.需要對該語言的特性作深入的了解
2.需要對物件導向的各種 pattern 有相當的認識,才能作出簡潔而又漂亮的設計
其實也不一定要有相當的認識,但也要有看過大量的Framework
另外,人都會有野心,會想要弄出跨平台,甚至跨語言的一個東西
這樣子的領域就又更龐大了
當我越想越多的時候,就越覺得龐大,越覺得不能馬上動手
所以一直沒有作
跨平台的東西, Borland Kylix and Delphi,Qt 和 Java 是著名的代表
Borland 的產品 CLX
Qt 是 linux 上著名的桌面管理 KDE 的底層,以C++撰寫,但寫出的東西,一樣能在Windows上compile
Java 則更誇張,compile 一次之後, run everywhere,只要檔案複製過去,然後執行環境的Java Virutal Machine有支援,就一切ok
跨語言的東西,COM, CORBA, 以及 beta版的 .Net 應該算是代表
COM, 衍生出 DCOM, COM+
CORBA, 則是 Unix 以及 Unix like 環境下,類似COM的東西,但其實CORBA出來的較早
這個標準實作的比較漂亮且完整,只是支援的語言不多,目前我知道的只有 Java, C++, Object Pascal 而已, Windows 平台上較不常見
.Net 是微軟的一個弘願,Linux上也有了相關的計劃,將來是可以期望的一個東西
說了那麼多,我的最後結論其實是
Framework仍然要作,但是不要像我一樣考慮那麼多,考慮的太多,反而讓自己無法前進
應該依照目前想實作的狀況,一族一族的去實作出來
比如說,現在要作 menu, 就先把 menu 類別及其衍伸類別實作出來
要作檔案,就把檔案類別及其衍生類別實作出來
一個一個去實作
將來如果需要合作的時候,再去參考 Design Pattern 中與合作相關的Pattern去實作
不行,再重寫
但是什麼都要自己寫嗎??
不, 如果現成語言裡已經提供了現成的一個類別, 那麼就直接使用
有跨平台或跨語言的需要,就寫一個wrapper類別把他包起來,將來若跨平台或語言的時候,只要重新實作這個wrapper就可以了
喔~~
回頭看了一下,我居然打了這麼多字
謝謝你的收看
^_^
—-
Saint said:
我倒是沒有想到過說要跨平台這一個問題!
不過我的想法,也倒如你所說的一樣!想的越多,我越難下手去做,
不是沒有想過說,先做一個起來,以後再用合併的方式來做
可是是否會有一個問題,就是所以的物件的起源,我是說如果這樣做的話
我會有一個base object 那有可能我所有的物件都會去參考這一個當做base
想著想著,有時想到如果程式要做,如果只是自己才看的懂那又矢去了意義!
想的越多越難做!
—-
Ellery said:
單一繼承的關係比較簡單,而且效率會較好
八月的時候,我看了侯捷翻譯的”深度探索C++物件模型”
雖然只看到第五章,就因為借書期限到的關係,只好還書
不過有作筆記(這是我第一次看書作筆記!)
對於物件導向實際上的運作了解很多
所以,我想還是建立一個 Base Object
但盡量只賦予必要的特性就可以了
也就是雖然此族的衍生類別都從一個父類別開始繼承,但此父類別必定繼承 Base Object
若真需要增加屬性或方法,只更動此父類別就可以,而不更動父類別
其實對於VFP來說,此動作並不是必要
因為VFP並不是強型別的語言也沒有支援虛擬
所以就不能這樣寫(以下是C++語法)
BaseObject *obj; //宣告成指標
Menu mymenu; //產生一個 mymenu物件,假設 menu繼承 BaseObject
Form myform; //產生一個 myform 物件, 假設 form 繼承 BaseObject
obj=&mymenu; //取得mymenu的位址,指定給obj
obj->activate(); //就可以直接呼叫 menu 的方法
obj=&myform; //取得myform的位址,指定給obj
obj->show(); //就可以直接呼叫 form 的方法
很神奇不是嗎?? 如果你用過強型別的語言
對這種神奇的感覺會很強烈
因為類別不同是不可以隨便指定的!換言之也不能隨意呼叫其他類別的方法
Java, Object Pascal 也都有類似的用法
VFP和VB 所有的變數都是 Variant, 這樣的感覺就不是很強烈
反正怎麼寫怎麼適用
local obj
obj=createobject(“menu”)
obj.activate()
obj=createobject(“form”)
obj.show()
但我就不清楚VFP內部是怎麼去實作的
說到程式看不看的懂
又牽扯到寫作風格的問題
我以前很痛恨這種寫作風格的問題
尤其是學校導師(後來老師因為肝的問題,英年早逝了,很遺憾沒去醫院看他最後一面)教我們COBOL的時候, 他一直不厭其煩的要求我們要這樣子去寫 COBOL 程式
那時候覺得如果強制要求寫作的風格,會很麻煩,而且排版的很累,寫出來的程式碼也會不簡潔,不漂亮
但是後來看過”撰寫0錯誤程式”這本書以及經過歷練之後就不會這樣想了
現在會盡量要求自己留下註解, 使用較清楚的方法去寫程式
假設前兩天寫出這樣的程式
if getanswer()
*do something
else
*do something
end if
隔兩天,我一定忘記我在寫什麼,於是又要去看 getanswer() 在寫什麼,浪費了許多時間
我會盡量這樣寫
*利用 getanswer() 函數詢問使用者的答案, true 表示使用者回答 yes
if getanswer()==true
*do something
else
*do something
end if
這樣至少我自己看程式會知道我之前要幹麼
哇~又打了這麼多
8-p

少林足球

shaolin_soccer_ellery_354219.jpg
8/25 中國情人節.
我一直很喜歡周星馳,他的每部片我幾乎都看過.即使都看過了,現在在播放時,我還是會笑出聲 ^_^. 我最喜歡他拍的”東西遊記”,非常之特出!
他睽違了兩年推出新片,當然,我很想去看.原本想,去看這樣的一個港片,到底值不值得?(應該很多人都會這麼想吧)
趁著情人節下午的空檔,說服了女友,和她去長春戲院看了這部片,長春戲院播放的是粵語版,換言之就是原音重現.之前,我有聽說食神粵語版的那首歌”情與義,值千金…”非常之好聽,很可惜後來看的都是國語版,所以都沒聽到,引以為憾.這次總算能看到粵語版,真是太高興了!
這部片非常之棒,讓我和女友從頭笑到尾,看完之後,覺得我們沒有浪費錢 ^_^
不過,我覺得結尾與魔鬼隊決戰的部分可以拍的更好些,不要太多特效,應該可以加上六師弟吃蛋的笑料,足球小將翼裡面的雙人射門,或是主角頹喪重新站起等等之類的情節.
大家趕快去看吧,港片通常很快就下檔囉!! ^_^

Artificial Intelligence

8/18 和女友一起去看 AI。之前在看預告的時候,原本以為會是一部具有相當衝突性的影片,沒想到,卻不是。我個人覺得,這部片應該算是類似童話故事的影片,有點悶,但卻很有省思的意味。

我想人類真能發展出極為類似真人的人工智慧而不加任何限制嗎??如果沒有限制,是不是會像 The Matrix 裡的機器人一樣,加害於人類,甚至利用人類??喔~~想起來就覺得可怕。

另外導演在最後加上溫馨的結局,雖然達到溫馨的效果,但卻顯得牽強。我認為應該在David發現無法完成心願的時候,讓他擁有仇恨的意識,在經過一段時間的潛伏後,利用博士的技術與知識轉換身體,引領機器人在人類世界裡革命,這樣的一個安排或許會更好!

看完之後,讓女友和我兩人覺得有點失望。Anyway,怕悶的人千萬別去看~

CODERED(C)紀實

上週
我發現Windows2000怪怪的
我習慣設定將網路連線的燈號顯示在工作列上,可他怎麼老是一直閃呢?
這實在很奇怪,我又沒有發信或者是去逛網頁.
接著,因為疑心的關係,覺得電腦上的所有軟體都變的奇怪;於是星期天,我就大刀闊斧的重灌,花了不少的時間(因為不太會用ghost,也懶得用,所以重灌會花許多時間).
重灌之後,是好多了,但IIS老是沒辦法啟動,或者啟動後沒多久,就又停止.網路連線的燈,偶爾會一直閃,粉奇怪.
奇怪的事情,必然有原因,我開始調查,正巧最近的電子報上一直提到”紅色警戒”肆虐,原本以為他只感染 Windows 2000英文版,想不到,CODERED的變種C,居然會感染Windows2000中文版,怪怪了不得,趕緊去微軟網站 download 修正程式來安裝,安裝之後,果然一切怪怪的情況減少了很多.
唉唉~~這樣子的一個專門攻擊IIS的病毒,日後對於目前網路上所推廣的 Web Service 必然有所影響.也許以後病毒都會對網頁伺服器下手了吧,屆時,影響的層面將會變的很大很大…..

偏執

年紀越來越大了,雖然並不很大,才二十來歲,但是,我覺得我的心越來越偏執,不再和早前一樣心胸開闊,不會因為某些沒道理的理由而對某些人或某些事情有錯誤的看法.
這很可怕,會影響自己對週遭人事物的判斷.
我應該要
多認識一些人
多走走
多觀察
而不要
任意下判斷而否決一個人或一件事
呵~
在我 icq 的Info(個人簡介)裡面,我放了這樣的一句偈語
由愛故生憂
由愛故生怖
若離于愛者
無憂亦無怖
這裡的”愛”,其實也可以解釋為偏執啊!

電話

前前一篇有提到我和我女友的一些事情,我仍然在想這個問題.
我們天天通電話,但他常聽不清楚我說的話,於是我又得被迫再說一次,如果又不清楚,我又得再說一次,一次又一次,會覺得心煩,慢慢會變的大聲.
她也知道這點,也告訴過我,
“就是聽不清楚啊~電話有雜音~”
“你說話太小聲了~~”
“你說話太快了~~”
“不懂你的詞彙~”
也許是電話的問題~
也許是我個人說話的問題~
也許是我們兩人國文程度有落差的問題~
雖然不曾因此而吵過架,但這卻是我必須要先適應的一點.婚前的交往並非沉醉在愛情之中,我認為也必須為婚後作一些心理準備,以提早適應.
所以,我告訴我自己.當發生這種情況的時候,我要說慢一點,大聲一點,運用一些她容易瞭解的詞彙,來說明.順道培養我的耐心.
不過
還是想抱怨一下~~~
真希望她”聽”和”說”的能力和她”閱讀”的能力一樣好~~

7/29 天母水管路古道

7/28 剛好在金石堂看到古道系列中的天母水管路古道,因此和女友商議後,決定就去那兒.
7/29 雖然是颱風來的前夕,但天氣仍然是熱的要命,絲毫不受影響.
我們沿著中山北路往北騎到底,就到了天母,在尾端可以看到一個圓環,那兒除了古道的入口之外,還有天母公園,也是個休憩的好地方.
繞過圓環,繼續往前騎到底,就可以發現右手邊有指標顯示,這條步道可以往陽明山遊客中心和文化大學.我和女友就下車往上爬了.
爬了沒多久,發現這條路出乎意料的陡,爬的我們兩個講不出話來.沿路上看到許多登山的人,讓我們印象比較深刻的是,有個爸爸帶了兩個小孩往上爬,小孩也不哭不鬧,爸爸還沿路作一些機會教育,讓人覺得他真是個好爸爸.另外也有看到阿媽帶了孫子去爬,經過的時候,聽到他們的對話,讓人覺得現在的小孩真的是跟以前不一樣了~總之,看到許多形形色色的人.
這條路到了後半,就分岔開來了,我們選擇左邊,通到文化大學附近,接下來就好走許多,風景也很優美,微微徐風吹來,讓人不禁懷疑剛剛陡坡的辛苦.
路上的小歇,把帶來的香瓜給吃掉了,補充一下體力,順便也讓平常不愛吃水果的女友吃個水果.
再走了不久,最後終於到了終點,原本想要搭公車再轉回天母去的,但擔心公車難等且路不熟的情況下,就放棄了這個想法,採取原路繞回.
原路繞回去,就輕鬆多了,全都是下坡,也注意到一些上山的時候沒注意到的東西,
印象較深是路邊一張懸掛的招牌,是聲明土地所有權的,農民因為有人去北市建設局告密,造成不必要的困擾,因此特別懸掛招牌告知古道的所有權以及兩邊作物和開墾的合法性.(為什麼印象深刻?大概是很難以想像會有人去告密吧.)
下次還要再來幾次,但是要找幾個朋友一起來爬爬~

心裡可怕的魔鬼

最近心裡特別覺得害怕
會覺得有時候我對我的女友很不友善
是不是我不再愛她了呢?
於是我有時候試著說服原定明年結婚的他在今年訂婚或結婚,但是訂婚或結婚能讓感情好轉嗎??不知道.
我的朋友,壕,他之前跟我說過一些話,大意是這樣的:感情在滿約一年多左右,會面臨一次蠻重大的考驗,如果度過了,之後大概就不會有問題.我,是不是也遇到了呢??不知道.
剛交往沒多久,很快就到了2/14情人節,那天和女友約會回家的路上,心裡感到很失落,不知道為什麼?回家之後,我打電話給我的乾表妹Pat,告訴他這件事情.他告訴我,如果不合,就不要在一起.我告訴表妹,我是真的愛她.如果我是真的愛她,那麼我現在應該不愛她嗎??不知道,至少我認為感情應該是需要負責任的.
去年的時候,有時候,我也會想到有一天當我不愛我的女友的時候,該怎麼辦?想了又想,後來有了一個答案,那就是,再重新追他一次.
是對愛情暫時感到厭倦嗎??不知道.
會想找些人來談談,這是一個不錯的管道.但我想他們能給的建議,應該我都能想的到(這是我的老毛病,自以為聰明).所以就又不太想找他們.
就先把我想到的東西貼到這裡來吧~
搞不好,有很多人想的也跟我一樣 ^_^
很久沒有來這裡發布新聞了,隔了幾個月後的破天荒~~