版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第8章圖書管理系統(tǒng)主窗體
8.1圖書管理系統(tǒng)主窗體介紹8.2菜單8.3MDI窗體8.4工具欄控件與狀態(tài)欄控件8.5上下文菜單8.6知識拓展8.7習題本章介紹圖書管理系統(tǒng)主窗體的制作,如圖8-1所示是一個簡化了的圖書管理系統(tǒng)主窗體,該窗體中使用了菜單、工具欄、狀態(tài)欄與彈出菜單,并且使用了多文檔界面(MDI)窗體。8.1圖書管理系統(tǒng)主窗體介紹圖8-1圖書管理系統(tǒng)主窗體在Windows環(huán)境中,大量使用菜單來改進應(yīng)用程序的用戶界面。菜單提供了方便且一致的方法將相關(guān)選項組合到一起。通常主菜單在菜單欄上顯示,而菜單欄多位于窗體標題欄的下方。在Windows窗體中,主菜單由MenuStrip控件表示,MenuStrip在程序設(shè)計中表現(xiàn)為菜單項的容器,而ToolStripMenuItem就是要往這個容器中添加的內(nèi)容。
可以給菜單指定快捷鍵。快捷鍵是一個組合鍵,可以實現(xiàn)從鍵盤激活菜單命令,而無需直接對菜單命令進行操作。快捷鍵通過設(shè)置菜單對象的ShortcutKeys屬性來定義。
下面實現(xiàn)圖書管理系統(tǒng)主窗體的菜單部分,效果如圖8-2所示。8.2菜單圖8-2圖書管理系統(tǒng)主窗體
menuV1.0的實現(xiàn)步驟如下:
(1)新建一個Windows應(yīng)用程序menu。
(2)在解決方案資源管理器中右鍵單擊Form1.cs,在彈出菜單中選擇“重命名”,屬性窗口的文件名改為FrmMain.cs,設(shè)置FrmMain的Text屬性為“圖書管理系統(tǒng)”。
(3)從“工具箱”的“菜單和工具欄”向窗體拖入一個MenuStrip控件。由于控件本身在程序運行時并不直接顯示,故與其他同類控件一樣出現(xiàn)在窗體設(shè)計器窗口的下方窗格中。
(4)選中MenuStrip控件,在窗體上方會出現(xiàn)“請在此處鍵入”的提示,可在提示處輸入菜單信息,按圖8-3、圖8-4所示結(jié)構(gòu)依次加入菜單項。
注意,“圖書借閱管理(M)”在輸入時應(yīng)為“圖書借閱管理(&M)”。“借書管理(B)”在輸入時應(yīng)為“借書管理(&B)”,菜單項在Text屬性中帶有“(&字母)”項稱為字母助記符,它的作用是通過助記符選中對應(yīng)的菜單項。操作時,按Alt+M可選擇“圖書借閱管理”菜單項;按Alt?+?M?+?B可選擇“借書管理”菜單項。
下拉菜單中經(jīng)常用一條橫線將菜單項分組,只要將這個菜單項的Text設(shè)置為“-”(減號)就可以建立這條橫線。圖8-3“圖書借閱管理”菜單
圖8-4“窗口”菜單
(5)加入FrmBorrow、FrmReturn窗體。
選擇菜單“項目”→“添加Windows窗體”,在出現(xiàn)的“添加新項”對話框的“名稱”編輯框中輸入“FrmBorrow.cs”,如圖8-5所示,單擊“添加”按鈕,這樣就向項目添加了一個名為FrmBorrow的窗體。用同樣操作向項目添加一個名為FrmReturn的窗體。設(shè)置FrmBorrow、FrmReturn窗體的Text屬性分別為“借書”、“還書”。圖8-5“添加新項”對話框
(6)為借書管理、還書管理菜單添加事件響應(yīng)。
雙擊“借書管理”菜單項,為其單擊事件編寫如下代碼:
privatevoid借書ToolStripMenuItem_Click(objectsender,EventArgse)
{
FrmBorrowfrm=newFrmBorrow();
frm.Show();
}
雙擊“還書管理”菜單項,為其單擊事件編寫如下代碼:
privatevoid還書ToolStripMenuItem_Click(objectsender,EventArgse)
{
FrmReturnfrm=newFrmReturn();
frm.Show();
}
(7)為菜單項指定快捷鍵。
選中“借書管理”菜單項,在屬性窗口中設(shè)置其ShortcutKeys屬性為Ctrl?+?B。這樣,按下快捷鍵Ctrl?+?B的,會觸發(fā)“借書管理”菜單項的Click事件。
C#?允許在單個容器窗體中創(chuàng)建包含多個窗體的多文檔界面(MDI)。多文檔界面允許用戶同時打開多個文檔,每個文檔占用一個窗體,用戶可以在不同的窗體間切換,處理不同的文檔。MDI窗體的特性:
●?MDI的容器窗體(父窗體)必須且只能有一個,它僅能當容器使用,其工作區(qū)域用于顯示子窗體,工作區(qū)域不能接受鍵盤和鼠標事件。8.3MDI窗體●不要在容器窗體的工作區(qū)域加入控件,否則這些控件會顯示在子窗體中。
●容器窗體的框架區(qū)可以有菜單和工具欄等控件。
●子窗體可以有多個,各子窗體不必相同。
●子窗體顯示在容器窗體的工作區(qū)域中,子窗體不能被移出容器窗體的客戶區(qū)。
●子窗體被最小化后,其圖標在容器窗體的底部,而不是在任務(wù)欄中。
●容器窗體被最小化后,子窗體隨同容器窗體一起被最小化在任務(wù)欄中。
●容器窗體被還原后,子窗體隨同容器窗體一起還原,并保持最小化之前的狀況。
●子窗體可以單獨關(guān)閉,但若關(guān)閉容器窗體,子窗體隨同容器窗體一起被關(guān)閉。
●子窗體可以有菜單,子窗體顯示后,其菜單被顯示在容器窗體上。
將窗體的IsMdiContainer屬性設(shè)置為true,它就成為容器窗體。容器窗體在顯示后,其工作區(qū)域是下凹的,等待子窗體顯示在下凹區(qū)。
將窗體的MdiParent屬性設(shè)置為當前主窗體,則該窗體成為子窗體。
MDI應(yīng)用程序支持多個子窗體實例,可以使用ActiveMdiChild屬性獲取具有焦點或當前處于活動狀態(tài)的子窗體(活動子窗體)。
一個MDI應(yīng)用程序由多個窗體組成。在某些情況下,用戶可能需要同時打開多個子窗體。此時,用戶需要合理排列MDI子窗體,以便可以同時操作多個子窗體。可以利用LayoutMdi()方法排列子窗體,LayoutMdi方法的參數(shù)為MdiLayout枚舉類型,MdiLayout枚舉的成員見表8-1。表8-1MDILayout枚舉的成員子窗體也可以包含具有特定功能的菜單,在這種情況下,父窗體允許子窗體將其菜單與MDI父窗體的菜單融合。MenuStrip的AllowMerge屬性為true時允許融合。子窗體上的菜單與父窗體菜單合并主要通過MergeAction和MergeIndex屬性的設(shè)置來實現(xiàn)。ToolStripMenultem控件的MergeAction代表合并的方式,默認情況下,MergeAction屬性的值為Append,這表示菜單將被融合到MDI父窗體菜單的末尾。
當設(shè)置菜單的MdiWindowListItem屬性時,對應(yīng)菜單項將包含所有打開的子窗體的名稱,當前活動的窗體名稱用對號做了標記,如圖8-6所示。該選項便于在激活的窗口間切換。
為主窗體添加MDI特征,效果如圖8-7所示。圖8-6當前打開窗口列表
圖8-7MDI窗體
menuV2.0的實現(xiàn)步驟如下:
(1)打開項目menuV1.0。
(2)設(shè)置FrmMain的IsMdiContainer屬性為true。
(3)修改“借書管理”、“還書管理”的代碼如下:privatevoid借書ToolStripMenuItem_Click(objectsender,EventArgse)
{
if(!isExist(“FrmBorrow”))
{
FrmBorrowfrm=newFrmBorrow();
frm.MdiParent=this;
frm.Show();
}
}
privatevoid還書ToolStripMenuItem_Click(objectsender,EventArgse)
{
if(!isExist("FrmReturn"))
{
FrmReturnfrm=newFrmReturn();frm.MdiParent=this;
frm.Show();
}
}
boolisExist(stringfrmName)
{
foreach(FormfrminMdiChildren)
{
if(frm.GetType().Name==frmName)
{
frm.BringToFront();
returntrue;
}
}
returnfalse;
}(4)為其他菜單項編寫如下代碼:
privatevoid水平平鋪ToolStripMenuItem_Click(objectsender,EventArgse)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
privatevoid垂直平鋪ToolStripMenuItem_Click(objectsender,EventArgse)
{
LayoutMdi(MdiLayout.TileVertical);
}
privatevoid層疊ToolStripMenuItem_Click(objectsender,EventArgse)
{
LayoutMdi(MdiLayout.Cascade);
}privatevoid關(guān)閉當前窗口ToolStripMenuItem_Click_1(objectsender,EventArgse)
{
ActiveMdiChild.Close();
}
privatevoid全部關(guān)閉ToolStripMenuItem_Click_1(objectsender,EventArgse)
{
foreach(FormfrminMdiChildren)
{
frm.Close();
}
}
(5)選中主菜單menuStrip1,設(shè)置其MdiWindowListItem為窗口ToolStripMenuItem,把窗口菜單設(shè)為子窗口列表菜單。工具欄控件ToolStrip的作用是為Windows應(yīng)用程序添加工具欄。工具欄一般是由多個按鈕、標簽等排列組成,通過這些項可以直觀快捷地調(diào)用常用菜單命令,比使用菜單選擇更加方便快捷,其被用于執(zhí)行最常用的菜單操作。
狀態(tài)欄控制StatusStrip通常用于在窗體的底部,顯示程序的運行狀態(tài)信息,也經(jīng)常用來為用戶提供所使用軟件的提示性信息。8.4工具欄控件與狀態(tài)欄控件使用Windows操作系統(tǒng)時,無論什么時候使用右鍵,屏幕上都會彈出包含了最常用選項的一個特殊菜單。此類菜單稱作上下文菜單。上下文菜單也稱為快捷菜單,用于為用戶提供最常用的選項,以提高用戶的工作效率。要為窗體或控件添加快捷菜單,需要從Toolbox窗口向窗體中添加ContextMenuStrip控件。
下面為主窗體添加工具欄控件、狀態(tài)欄與上下文菜單,效果如圖8-8所示。8.5上?下?文?菜?單圖8-8工具欄控件、狀態(tài)欄與上下文菜單
menuV3.0的實現(xiàn)步驟如下:
(1)打開項目menuV2.0。
(2)使用ToolStrip控件。
①從“工具箱”的“菜單和工具欄”向窗體拖入一個ToolStrip控件。由于控件本身在程序運行時并不直接顯示,故與其他同類控件一樣出現(xiàn)在窗體設(shè)計器窗口的下方窗格中。
②選中ToolStrip控件,單擊窗體上方ToolStrip控件對應(yīng)的下拉框,如圖8-9所示。選擇Button,向工具欄添加一個按鈕,在屬性窗口設(shè)置Text為“借書”,TextImageRelation屬性設(shè)為ImageAboveText,Image屬性設(shè)為相應(yīng)的圖片文件。同樣操作向工具欄再添加一個按鈕,在屬性窗口設(shè)置Text為“還書”,TextImageRelation屬性設(shè)為ImageAboveText,Image屬性設(shè)為相應(yīng)的圖片文件。圖8-9設(shè)計工具欄③選中“借書”按鈕,在“屬性”窗口切換至“事件”頁,利用下拉框設(shè)置其Click事件為“借書ToolStripMenuItem_Click”,也就是使得單擊“借書”按鈕與單擊“借書管理”有相同的響應(yīng)。同樣操作,設(shè)置“還書”按鈕的Clik事件為“還書ToolStripMenuItem_Click”。
(3)使用ContexMenuStrip控件。
①從“工具箱”的“菜單和工具欄”向窗體拖入一個ContexMenuStrip控件。由于控件本身在程序運行時并不直接顯示,故與其他同類控件一樣出現(xiàn)在窗體設(shè)計器窗口的下方窗格中。
②選中ContexMenuStrip控件,在窗體上方會出現(xiàn)“請在此處鍵入”的提示,可在提示處輸入菜單信息,按如圖8-10所示結(jié)構(gòu)依次加入菜單項。圖8-10設(shè)計上下文菜單③選中上下文菜單中的“借書”菜單項,在“屬性”窗口切換至“事件”頁,利用下拉框設(shè)置其Clik事件為“借書ToolStripMenuItem_Click”,也就是使得單擊“借書”按鈕與單擊“借書管理”有相同的響應(yīng)。同樣操作,設(shè)置上下文菜單中的“還書”菜單項的Clik事件為“還書ToolStripMenuItem_Click”。
(4)使用StatusStrip控件。
①從“工具箱”的“菜單和工具欄”向窗體拖入一個StatusStrip控件。由于控件本身在程序運行時并不直接顯示,故與其他同類控件一樣出現(xiàn)在窗體設(shè)計器窗口的下方窗格中。
②選中StatusStrip控件,單擊窗體底部StatusStrip控件對應(yīng)的下拉框,選擇StatusLabel,向工具欄添加一個Label控件。
③在FrmMain窗體上雙擊,為其Load事件編寫代碼如下:privatevoidfrmMain_Load(objectsender,EventArgse)
{
stringuserName="小王";
toolStripStatusLabel1.Text="當前用戶:"+userName;
}8.6.1TreeView控件
TreeView控件可以顯示節(jié)點層次結(jié)構(gòu),就像在Windows操作系統(tǒng)中Windows資源管理器左窗格中顯示的文件和文件夾一樣。顯示的層次結(jié)構(gòu)稱為樹視圖,其中的各個節(jié)點可包含其他節(jié)點,按照展開或折疊的方式顯示包含子節(jié)點的節(jié)點。8.6知識拓展【例8-1】TreeView的使用,運行效果如圖8-11所示。圖8-11例8-1運行效果privatevoidForm1_Load(objectsender,EventArgse)
{
this.InitTreeView(this.treeView1);
this.AddNode(this.treeView1);
}
privatevoidInitTreeView(TreeViewtreeView)
{
//添加根節(jié)點
TreeNodeRoot=newTreeNode("圖書目錄");
treeView.Nodes.Add(Root);
treeView.CheckBoxes=false; //不顯示復(fù)選框
treeView.FullRowSelect=true;
ImageListimageList=newImageList();
imageList.Images.Add(newIcon("Folder.ico"));imageList.Images.Add(newIcon("OpenFolder.ico"));
imageList.Images.Add(newIcon("Book.ico"));
treeView.ImageList=imageList; //設(shè)置圖像集合
treeView.LabelEdit=false; //設(shè)置不能編輯
treeView.PathSeparator="\\"; //用\符號為分隔符
treeView.Scrollable=true; //顯示滾動條
treeView.ShowLines=true; //顯示連線
treeView.ShowNodeToolTips=true;
treeView.ShowPlusMinus=true; //顯示+-號
treeView.ShowRootLines=true;
}
voidtreeView_AfterSelect(objectsender,TreeViewEventArgse)
{if(e.Node.Tag!=null)
{
Bookbook=e.Node.TagasBook;
this.txtPath.Text=e.Node.FullPath;
this.txtBookName.Text=book.BookName;
this.txtAuthor.Text=book.Author;
this.txtPrice.Text=book.Price;
}
}
privatevoidAddNode(TreeViewtreeView)
{
//添加節(jié)點
TreeNodeMainNode=treeView.Nodes[0];
treeView.BeginUpdate(); //開始更新MainNode.Nodes.Clear();
//創(chuàng)建第一個分類節(jié)點
TreeNodeCatalog1=newTreeNode("計算機技術(shù)");
Catalog1.ImageIndex=0;
Catalog1.SelectedImageIndex=1;
BookBook1=newBook();
Book1.BookName="計算機技術(shù)";
Book1.Author="小王";
Book1.Price="20.00";
//創(chuàng)建子節(jié)點1
TreeNodeBookNode1=newTreeNode(Book1.BookName);
BookNode1.ImageIndex=2;
BookNode1.SelectedImageIndex=2;
BookNode1.Tag=Book1;BookBook2=newBook();
Book2.BookName="Windows技術(shù)";
Book2.Author="小李";
Book2.Price="60.00";
//創(chuàng)建子節(jié)點2
TreeNodeBookNode2=newTreeNode(Book2.BookName);
BookNode2.ImageIndex=2;
BookNode2.SelectedImageIndex=2;
BookNode2.Tag=Book2;
//把節(jié)點加入到treeview中
Catalog1.Nodes.Add(BookNode1);
Catalog1.Nodes.Add(BookNode2);
MainNode.Nodes.Add(Catalog1);//增加第二個分類節(jié)點
TreeNodeCatalog2=newTreeNode("文學(xué)小說");
Catalog2.ImageIndex=0;
Catalog2.SelectedImageIndex=1;
BookBook3=newBook();
Book3.BookName="ASP.NET";
Book3.Author="張三";
Book3.Price="39.00";
TreeNodeBookNode3=newTreeNode(Book3.BookName);
BookNode3.ImageIndex=2;
BookNode3.SelectedImageIndex=2;
BookNode3.Tag=Book1;
BookBook4=newBook();Book4.BookName="C#教程";
Book4.Author="李四";
Book4.Price="20.00";
TreeNodeBookNode4=newTreeNode(Book4.BookName);
BookNode4.ImageIndex=2;
BookNode4.SelectedImageIndex=2;
BookNode4.Tag=Book4;
Catalog2.Nodes.Add(BookNode3);
Catalog2.Nodes.Add(BookNode4);
MainNode.Nodes.Add(Catalog2);
treeView.EndUpdate(); //結(jié)束更新
}
publicclassBook
{
publicstringBookName=string.Empty;
publicstringAuthor=string.Empty;
publicstringPrice=string.Empty;
}8.6.2ListView控件
ListView控件顯示帶圖標的項的列表。列表視圖可創(chuàng)建類似于Windows資源管理器右窗格的用戶界面。該控件主要有四種視圖模式:“LargeIcon”、“SmallIcon”、“List”和“Details”。
ListView控件的主要屬性是Items,此屬性包含該控件顯示的項。SelectedItems屬性包含控件中當前選定項的集合。如果將MultiSelect屬性設(shè)置為true,則用戶可選擇多項。
【例8-2】ListView控件的使用,運行效果如圖8-12、圖8-13所示。圖8-12初始運行界面
圖8-13選中LargeIcon后的運行效果主要代碼如下:
//填充ListView
privatevoidFillList()
{
listView.Items.Clear();
listView.BeginUpdate(); //開始更新
//加入ListView的第一項數(shù)據(jù)
ListViewItemlistItem=newListViewItem("C#程序設(shè)計");
listItem.ImageIndex=0;
listItem.SubItems.Add("張三");
listItem.SubItems.Add("30");
listView.Items.Add(listItem);
//加入ListView的第二項數(shù)據(jù)
listItem=newListViewItem("數(shù)據(jù)庫技術(shù)");listItem.ImageIndex=0;
listItem.SubItems.Add("李四");
listItem.SubItems.Add("26");
li
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年宜賓市敘州區(qū)婦幼保健計劃生育服務(wù)中心第二次公開招聘聘用人員備考題庫及答案詳解一套
- 廣西欽州市教育系統(tǒng)2026年“欽聚英才”浦北縣專場集中招聘急需緊缺人才備考題庫含答案詳解
- 2025年玉溪川洋產(chǎn)業(yè)發(fā)展有限公司招聘工作人員備考題庫及答案詳解一套
- 湛江市2025年事業(yè)單位公開招聘高層次人才備考題庫附答案詳解
- 2025年蘇州工業(yè)園區(qū)勝浦實驗小學(xué)教學(xué)輔助人員招聘備考題庫及參考答案詳解1套
- 2025年欽北區(qū)長灘鎮(zhèn)衛(wèi)生院招聘備考題庫有答案詳解
- 珙縣事業(yè)單位2025年下半年公開考核招聘工作人員的備考題庫及一套答案詳解
- 北海市海城區(qū)關(guān)心下一代工作委員會辦公室2025年編外工作人員招聘備考題庫附答案詳解
- 2025年貴州鹽業(yè)(集團)安順有限責任公司公開招聘工作人員5人備考題庫及完整答案詳解1套
- 寧晉縣泊陽農(nóng)業(yè)發(fā)展服務(wù)有限公司2025年公開招聘工作人員備考題庫及參考答案詳解1套
- 足療卡銷售高轉(zhuǎn)化話術(shù)
- 2025年山西省朔州市公安輔警招聘知識考試題(含答案)
- 買院子合同協(xié)議書
- 高二化學(xué)(人教版)試題 選擇性必修一 模塊質(zhì)量檢測(二)
- 癲癇常見癥狀及護理培訓(xùn)課程
- (新教材)2025年部編人教版三年級上冊語文第七單元復(fù)習課件
- 小學(xué)語文板書基本功培訓(xùn)
- 2025甘肅酒泉市公安局招聘留置看護崗位警務(wù)輔助人員30人(第三批)考試筆試參考題庫附答案解析
- 吊車吊裝專項施工方案
- 池州市排水有限公司天堂湖污水處理廠項目環(huán)境影響報告表
- 2021年度學(xué)校推薦評審專業(yè)技術(shù)職務(wù)任職資格量化賦分辦法
評論
0/150
提交評論