2018-05-25

                              收銀員/庫(kù)管員系統(tǒng)主界面的制作

1:在Microsoft Excel中,可以同時(shí)打開多個(gè)Excel文檔,而不需要新打開一個(gè)Excel窗口,這種應(yīng)用程序叫做MDI(多文檔界面)應(yīng)用程序。


圖片1.png

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.jpg

(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();
  1. 菜單欄的制作

NET提供了一個(gè) menuStrip 控件,使用戶能夠方便地創(chuàng)建菜單。

菜單欄(menuStrip)控件:

利用菜單條控件可以輕松地創(chuàng)建Office那樣的菜單,在菜單條中可以添加菜單項(xiàng)(MenuItem)、組合框(ComboBox)和文本框(TextBox)
image.png
image.png
圖片3.gif
  1. 工具欄和狀態(tài)欄
image.png

工具欄及狀態(tài)欄上的按鈕和標(biāo)簽的主要屬性和事件

image.png

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è)非可視化的控件。
常用屬性和事件:

image.png

在主界面右下角顯示當(dāng)前的日期和時(shí)間:


圖片4.png

擴(kuò)展練習(xí)(1):使用Timer控件實(shí)現(xiàn)計(jì)時(shí)器界面


![![圖片6.png](https://upload-images.jianshu.io/upload_images/11739501-1f08c6eaad3b7c18.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ](https://upload-images.jianshu.io/upload_images/11739501-2852257f5d0c7934.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

擴(kuò)展練習(xí)(2):使用Timer控件實(shí)現(xiàn)計(jì)時(shí)器界面

image.png
image.png

擴(kuò)展練習(xí)(3):使用Timer控件實(shí)現(xiàn)開門動(dòng)畫效果


image.png
image.png

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的代碼目錄中

圖片7.png

第2步:在項(xiàng)目A中引入拷貝過(guò)來(lái)的新窗口(選擇MainForm.cs即可導(dǎo)入MainForm窗口)

圖片8.png

第3步:整個(gè)解決方案替換成項(xiàng)目A的namespace

圖片9.png
  1. 兩個(gè)窗口傳值

任務(wù)描述:在LoginForm中點(diǎn)擊登錄按鈕,進(jìn)入MainForm,同時(shí)隱藏LoginForm。登錄用戶名傳遞到MainForm中顯示。

實(shí)現(xiàn):在LoginForm的登錄方法中,添加如下代碼:

image.png
  1. 根據(jù)角色進(jìn)入不同的主窗口
image.png

界面參考設(shè)計(jì):

收銀員


圖片10.png

庫(kù)管員


圖片11.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容