收銀員/庫(kù)管員系統(tǒng)主界面的制作
1:在Microsoft Excel中,可以同時(shí)打開多個(gè)Excel文檔,而不需要新打開一個(gè)Excel窗口,這種應(yīng)用程序叫做MDI(多文檔界面)應(yīng)用程序。
2:在項(xiàng)目中使用MDI窗體時(shí),通常將一個(gè)MDI容器窗體作為父窗體,父窗體可以將多個(gè)子窗體包容在它的工作區(qū)之中。MDI父窗體與其子窗體之間表現(xiàn)出如下的特性:
MDI的容器窗體(父窗體)必須且只能有一個(gè),它只能當(dāng)容器使用,其客戶區(qū)用于顯示子窗體,客戶區(qū)不能接受鍵盤和鼠標(biāo)事件。
不要在容器窗體的客戶區(qū)加入控件,否則那些控件會(huì)顯示在子窗體中。
容器窗體的框架區(qū)可以有菜單、工具欄和狀態(tài)欄等控件。
子窗體可以有多個(gè),各個(gè)子窗體不必相同。
子窗體被顯示在容器窗體的客戶區(qū)之中,子窗體不可能被移出容器窗體的客戶區(qū)之外。
子窗體被最小化后,其圖標(biāo)在容器窗體的內(nèi)部,而不是在任務(wù)欄中。
子窗體可以單獨(dú)關(guān)閉,但若關(guān)閉容器窗體,子窗體隨同容器窗體一起被關(guān)閉。
(1/2)、MDI容器窗體
只要將窗體的IsMdiContainer屬性設(shè)置為True,它就是容器窗體。一種是在窗體的Load()事件中設(shè)置,一種是在屬性中設(shè)置:
this.IsMdiContainer=True;
容器窗體在顯示后,其客戶區(qū)是凹下的,等待子窗體顯示在下凹區(qū)。不要在容器窗體的客戶區(qū)設(shè)計(jì)任何控件。
(2/2)、MDI子窗體
MDI子窗體就是一般的窗體,其上可以設(shè)計(jì)任何控件,此前設(shè)計(jì)過(guò)的任何窗體都可以作為MDI子窗體。只要將某個(gè)窗體實(shí)例的MdiParent屬性設(shè)置到一個(gè)MDI父窗體,它就是那個(gè)父窗體的子窗體,語(yǔ)法為:
窗體實(shí)例名.MdiParent=父窗體對(duì)象;
例如,下一段代碼編寫在一個(gè)MDI父窗體的某個(gè)事件處理程序中,創(chuàng)建一個(gè)子窗體實(shí)例formChild1并將其顯示在MDI父窗體的客戶區(qū)中:
FormChild formChild1 = new FormChild();
formChild1.MdiParent = this;
formChild1.Show();
- 菜單欄的制作
NET提供了一個(gè) menuStrip 控件,使用戶能夠方便地創(chuàng)建菜單。
菜單欄(menuStrip)控件:
利用菜單條控件可以輕松地創(chuàng)建Office那樣的菜單,在菜單條中可以添加菜單項(xiàng)(MenuItem)、組合框(ComboBox)和文本框(TextBox)
- 工具欄和狀態(tài)欄
工具欄及狀態(tài)欄上的按鈕和標(biāo)簽的主要屬性和事件
C#中獲取當(dāng)前日期和時(shí)間的方法:
// 獲取日期+時(shí)間?DateTime.Now.ToString(); // 默認(rèn)格式的日期和時(shí)間
DateTime.Now.ToString(“yyyy-MM-dd HH:mm:ss”); // 指定格式:2018-04-09 21:02:10?// 獲取日期?DateTime.Now.ToShortDateString(); // 默認(rèn)日期格式?DateTime.Now.ToString(“yyyy-MM-dd”); //指定日期格式:2018-04-09?// 獲取時(shí)間?DateTime.Now.ToLongTimeString(); // 默認(rèn)時(shí)間格式?DateTime.Now.ToString(“hh:mm:ss”); // 指定時(shí)間格式:09:02:10
3.Timer控件的屬性和事件
Timer控件,計(jì)時(shí)器,用于需要按一定時(shí)間間隔周期性執(zhí)行某事件的場(chǎng)合,
是一個(gè)非可視化的控件。
常用屬性和事件:
在主界面右下角顯示當(dāng)前的日期和時(shí)間:
擴(kuò)展練習(xí)(1):使用Timer控件實(shí)現(xiàn)計(jì)時(shí)器界面
擴(kuò)展練習(xí)(2):使用Timer控件實(shí)現(xiàn)計(jì)時(shí)器界面
擴(kuò)展練習(xí)(3):使用Timer控件實(shí)現(xiàn)開門動(dòng)畫效果
THE ENDING.....
兩個(gè)已有項(xiàng)目進(jìn)行合并
任務(wù):項(xiàng)目A和項(xiàng)目B,將B的窗口合并到A項(xiàng)目中去
方法一:
以項(xiàng)目A為基礎(chǔ),將項(xiàng)目B的內(nèi)容在項(xiàng)目A重新實(shí)現(xiàn)一遍
任務(wù):項(xiàng)目A和項(xiàng)目B,將B的窗口合并到A項(xiàng)目中去
方法二(提前做好項(xiàng)目A和B的備份,防止合并出錯(cuò)):
第1步:將項(xiàng)目B的窗口源文件(每個(gè)窗口三個(gè)文件)拷貝到項(xiàng)目A的代碼目錄中
第2步:在項(xiàng)目A中引入拷貝過(guò)來(lái)的新窗口(選擇MainForm.cs即可導(dǎo)入MainForm窗口)
第3步:整個(gè)解決方案替換成項(xiàng)目A的namespace
- 兩個(gè)窗口傳值
任務(wù)描述:在LoginForm中點(diǎn)擊登錄按鈕,進(jìn)入MainForm,同時(shí)隱藏LoginForm。登錄用戶名傳遞到MainForm中顯示。
實(shí)現(xiàn):在LoginForm的登錄方法中,添加如下代碼:
- 根據(jù)角色進(jìn)入不同的主窗口
界面參考設(shè)計(jì):
收銀員
庫(kù)管員