第02篇:C#星夜拾遗之Windows窗体
盡管人們一直說高手都用編寫控制臺程序,盡管企業(yè)都在使用基于Web的應(yīng)用程序,但我這里依然選擇了從Windows窗體入門。原因很簡單,我喜歡WinForm應(yīng)用程序完美的可視化界面。
創(chuàng)建Windows窗體應(yīng)用程序
根據(jù)上一篇中的WinForm版 Hello World的方法,創(chuàng)建一個(gè)名為SampleWinFormApp的Windows應(yīng)用程序。這是最簡單、明了的創(chuàng)建方式。也有一些高人通過Nodepad創(chuàng)建,并通過命令行編譯執(zhí)行的,這里不做說明,因?yàn)楣P者沒有那樣做過。
在Form1的編輯窗口中,你可以拖拉工具箱中的項(xiàng)到窗口中,在公共控件欄目中的項(xiàng)為總常用的。你可以隨意拖幾個(gè)控件看看運(yùn)行的效果,實(shí)踐是檢驗(yàn)真理的唯一方法,也是走向編程大門的不二法門。
說說Program.cs
雙擊打開Program.cs文件,會看到這個(gè)文件里面就一個(gè)Main方法,學(xué)習(xí)過C語言的都應(yīng)該知道,Main方法就是程序的入口,這也不例外。Main方法中有三行代碼,前兩行貌似是設(shè)置窗口樣式什么的,不做說明。第三行的用處在于設(shè)置運(yùn)行時(shí)的窗口。這里是Form1,如果你的程序中有一個(gè)Form2,并且你希望程序運(yùn)行后進(jìn)入的界面是Form2,就可以將這里的Form1改為Form2即可。
另外,在Main方法中還可以加入一些系統(tǒng)初始化的內(nèi)容,例如在這里初始化數(shù)據(jù)庫連接對象、檢驗(yàn)程序是否注冊等。
說說Control類
Control類是每個(gè)控件和窗體的基類,它的核心功能是創(chuàng)建用戶所見的界面。
Control類實(shí)現(xiàn)向用戶顯示信息的類所需的最基本功能。它處理用戶通過鍵盤和指針設(shè)備所進(jìn)行的輸入。它還處理消息路由和安全。雖然它并不實(shí)現(xiàn)繪制,但是它定義控件的邊界(其位置和大小)。它提供窗口句柄 (hWnd)……總之,這個(gè)Control類可謂功能強(qiáng)大。感興趣的朋友可以參考MSDN,這里不多贅言。
窗口之間的參數(shù)傳遞(示例下載:SampleWinFormApp.rar)
既然要傳遞參數(shù),自然要新建第二個(gè)窗口,右鍵項(xiàng)目>添加>Windows窗體,如下圖:
在添加完成后,將Form1和Form2設(shè)計(jì)下圖:
相信你已經(jīng)明白這個(gè)示例要做的事情了吧,沒錯(cuò),就是對Form1中的名稱進(jìn)行重命名操作。操作流程為:點(diǎn)擊“重命名”按鈕,打開Form2,在Form2中顯示并可修改Form1中的名稱,修改完成后點(diǎn)擊“確定”按鈕,Form1中的名稱也會更新。
首先,為窗口中的按鈕添加單擊事件,可以通過雙擊按鈕本身,也可以在事件列表窗口中找到,并添加。這里的所有名稱都采用默認(rèn)值。
然后就是編程了。這里給出Form1 和Form2 的全部代碼:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.textBox1.ReadOnly = true; // 設(shè)置TextBox1只讀
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2(this.textBox1.Text);
// 判斷是否點(diǎn)擊確定按鈕
if (form2.ShowDialog() == DialogResult.OK)
this.textBox1.Text = form2.GetNewName();
}
}
public partial class Form2 : Form
{
public Form2(string oldName)
{
InitializeComponent();
this.textBox1.Text = oldName;
}
public string GetNewName()
{
return this.textBox1.Text;
}
private void button1_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
結(jié)束語
記得在剛學(xué)習(xí)C#窗體應(yīng)用程序時(shí),在參數(shù)傳遞這一部分浪費(fèi)了很多時(shí)間,最后還是請教老師才搞明白的。其實(shí)這里是類的調(diào)用,沒有面向?qū)ο缶幊袒A(chǔ)的朋友可能不理解,在后面的章節(jié)中會進(jìn)一步說明。
如果認(rèn)為此文對您有幫助,別忘了支持一下哦!
本文轉(zhuǎn)自齊師傅博客園博客,原文鏈接:http://www.cnblogs.com/youring2/archive/2010/05/14/1735697.html,如需轉(zhuǎn)載請自行聯(lián)系原作者
總結(jié)
以上是生活随笔為你收集整理的第02篇:C#星夜拾遗之Windows窗体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习Java的三十三个建议
- 下一篇: C# 生成 MongoDB 中的 Obj