《2.3 系統(tǒng)主界面的制作》
1.效果圖

圖2.gif

2.實(shí)現(xiàn)MDI主界面的主要步驟
項(xiàng)目一:
1.新建MDI容器窗體: 只要將窗體的IsMdiContainer屬性設(shè)置為T(mén)rue,它就是容器窗體。一種是在窗體的Load()事件中設(shè)置,一種是在屬性中設(shè)置:
this.IsMdiContainer=True;
容器窗體在顯示后,其客戶(hù)區(qū)是凹下的,等待子窗體顯示在下凹區(qū)。不要在容器窗體的客戶(hù)區(qū)設(shè)計(jì)任何控件,并添加相應(yīng)控件。
2.新建MDI子窗體:MDI子窗體就是一般的窗體,其上可以設(shè)計(jì)任何控件,此前設(shè)計(jì)過(guò)的任何窗體都可以作為MDI子窗體。只要將某個(gè)窗體實(shí)例的MdiParent屬性設(shè)置到一個(gè)MDI父窗體,它就是那個(gè)父窗體的子窗體,語(yǔ)法為:
- 窗體實(shí)例名.MdiParent=父窗體對(duì)象;
項(xiàng)目二:
1.新建窗體:用戶(hù)登錄主界面,庫(kù)管員登錄主界面,收銀員登錄主界面,添加控件。
2.添加代碼:任務(wù)描述:在LoginForm中點(diǎn)擊登錄按鈕,進(jìn)入MainFormUser,同時(shí)隱藏LoginForm。登錄用戶(hù)名傳遞到MainFormUser中顯示。
實(shí)現(xiàn):在LoginForm的登錄方法中,添加如下代碼:

在MainFormUser窗體中添加:

3主界面中涉及到的控件以及控件的重要屬性、方法
項(xiàng)目一:
MenuStrips屬性:
Name 菜單對(duì)象名稱(chēng)
Items 菜單中顯示的項(xiàng)的
DropDownItems 下級(jí)菜單項(xiàng)的集合
Text 菜單顯示的文本
MenuStrips事件:
Click 菜單項(xiàng)單擊
項(xiàng)目二:
Timer控件,計(jì)時(shí)器,用于需要按一定時(shí)間間隔周期性執(zhí)行某事件的場(chǎng)合,
是一個(gè)非可視化的控件。
常用屬性和事件
屬性
Enabled 設(shè)置Timer是否啟用,值為T(mén)rue/False
Interval 設(shè)置定時(shí)器兩次Tick事件發(fā)生的時(shí)間間隔,單位:毫秒
事件
Tick 每個(gè)Interval時(shí)間后觸發(fā)一次該事件
方法
Start() 啟動(dòng)定時(shí)器。調(diào)用格式:Timer控件名.Start();
Stop() 停止定時(shí)器。調(diào)用格式:Timer控件名.Stop();
4.主界面的功能如何與系統(tǒng)結(jié)構(gòu)圖對(duì)應(yīng)

5.貼入重要代碼片段,并進(jìn)行詳細(xì)描述
項(xiàng)目一:
在formchild窗體中添加
FormChild frmChild = new FormChild();
frmChild.MdiParent = this;
frmChild.Show();
項(xiàng)目二:
// 窗口加載時(shí),設(shè)置默認(rèn)角色為“收銀員”
private void LoginForm_Load(object sender, EventArgs e)
{
this.cbb_Type.SelectedIndex = 0;
}
// 點(diǎn)擊“登錄”按鈕則登錄系統(tǒng)
private void bt_Login_Click(object sender, EventArgs e)
{
if (this.cbb_Type.SelectedItem.ToString() == "收銀員")
{
if (this.tb_User.Text == "123456" && this.tb_Password.Text == "123456")
{
MessageBox.Show("收銀員登錄成功");
// 顯示收銀員主界面
MainFormUser formUser = new MainFormUser();
formUser.userName = this.tb_User.Text.ToString();
formUser.Show();
// 隱藏登錄界面
this.Hide();
}
else
{
MessageBox.Show("用戶(hù)名或密碼錯(cuò)誤", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
if (this.cbb_Type.SelectedItem.ToString() == "庫(kù)管員")
{
if (this.tb_User.Text == "admin" && this.tb_Password.Text == "admin")
{
MessageBox.Show("庫(kù)管員登錄成功");
// 顯示庫(kù)管員主界面
MainFormAdmin formAdmin = new MainFormAdmin();
formAdmin.userName = this.tb_User.Text.ToString();
formAdmin.Show();
// 隱藏登錄界面
this.Hide();
}
else
{
MessageBox.Show("用戶(hù)名或密碼錯(cuò)誤", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
// 點(diǎn)擊“退出”按鈕則退出應(yīng)用程序
private void bt_Exit_Click(object sender, EventArgs e)
{
Application.Exit();
}
// 在用戶(hù)名輸入框中按“回車(chē)”,光標(biāo)跳轉(zhuǎn)到密碼輸入框
private void tb_User_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
SendKeys.Send("{tab}");
}
}
// 在密碼輸入框中按“回車(chē)”,則直接登錄
private void tb_Password_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
this.bt_Login_Click(sender, e);
}
}
// Tab進(jìn)入用戶(hù)名輸入框時(shí),自動(dòng)全選用戶(hù)名
private void tb_User_Enter(object sender, EventArgs e)
{
((TextBox)sender).SelectAll();
}
// Tab進(jìn)入密碼輸入框時(shí),自動(dòng)全選密碼
private void tb_Password_Enter(object sender, EventArgs e)
{
((TextBox)sender).SelectAll();
}