一、多窗體
1、哪個(gè)是主窗體
利用From1的button將From2打開(kāi)
private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); this.Hide();//打開(kāi)From2時(shí),隱藏From1 }
光那樣出現的問(wèn)題:主窗體隱藏了,關(guān)閉其它窗體后,沒(méi)有將主窗體顯示/關(guān)閉,那么程序就關(guān)不上了
(1)、構造函數傳值,將窗體傳到另一個(gè)窗體中去
首先打開(kāi)From2代碼,并選擇事件FormClosing
Form1 F1 = null; public Form2(Form1 f1) { InitializeComponent(); F1 = f1; } private void Form2_FormClosing(object sender, FormClosingEventArgs e) { F1.Close(); }
然后將From1中的 Form2 f2 = new Form2();改為Form2 f2 = new Form2(this);
2、窗體只能打開(kāi)一個(gè)
在From1中創(chuàng )建一個(gè)全局的泛型集合,為了放置全部打開(kāi)的窗體
List<Form> flist = new List<Form>();
(1)、在窗體打開(kāi)之前,判斷集合中是否有name一致的窗體,如果有就說(shuō)明已經(jīng)打開(kāi)了,就不要再打開(kāi)了
將From1中button1的點(diǎn)擊事件改為
bool has=false;//From2是否已被打開(kāi)一次 Form2 f2 = new Form2(this); foreach(Form F in flist) { if(F.Name==f2.Name) { has = true; } } if (has) { } else { flist.Add(f2); f2.Show(); }
問(wèn)題:當窗體打開(kāi)了,關(guān)閉后,就無(wú)法再次打開(kāi)了
辦法:當窗體關(guān)閉時(shí),清除Form1中集合中的此窗體對象記錄
首先在from 1添加一個(gè)函數
public void deleteFrom(Form F) { flist.Remove(F); }
然后在From2的FormClosing事件中改為
if(F1!=null) { F1.deleteFrom(this); }
問(wèn)題:當窗體已經(jīng)打開(kāi),再次點(diǎn)擊打開(kāi)按鈕,不會(huì )將已打開(kāi)的窗體重新顯示并焦點(diǎn)進(jìn)入
辦法:
找到已打開(kāi)對象,將WindowState屬性設置為:
找到已打開(kāi)窗體的對象,使用Focus方法;
在From1中button1的點(diǎn)擊事件中if(has){}中添加“ f2.Close();”,它起到釋放內存的作用
if(F.Name==f2.Name){has = true;}true;后添加F.WindowState = FormWindowState.Normal;//最小化或最大化時(shí)點(diǎn)擊按鈕恢復正常大小
F.Focus();//焦點(diǎn)進(jìn)入
3、窗體之間的傳值和控制
傳值:構造函數傳值
將From2的構造函數改為
public Form2(Form1 f1,string uname)
{
InitializeComponent();
F1 = f1;
label1.Text = "歡迎回來(lái)," + uname;
}
在From1中改為 Form2 f2 = new Form2(this,textBox1.Text);
控制:第一步,找到窗體對象,第二步,將窗體對象的控件值更改
注意:要將窗體中的對象訪(fǎng)問(wèn)權限修改為public:
在From2中添加新建一個(gè)按鈕和文本框,點(diǎn)擊此按鈕的點(diǎn)擊事件,添加if(F1!=null){F1.button1.Text=Textbox1.Text}
4、提示框類(lèi)型的窗體
ShowDialog();
修改地方:
Form2 f2 = new Form2(this,textBox1.Text); f2.ShowDialog();
作用:
將窗體顯示為模式對話(huà)框。 在調用Form.ShowDialog方法后,直到關(guān)閉對話(huà)框后,才執行此方法后面的代碼
二、菜單和工具欄
1、MenuStrip:
頂部菜單,可右鍵點(diǎn)擊插入標準項
分割線(xiàn):1、- 2、右鍵插入Separator
快捷鍵:每一個(gè)項右鍵屬性最下面ShortcuKeys可以設置快捷鍵,ShowShortcuKeys是否在該項上顯示快捷鍵
不管選項隱藏還是菜單隱藏,快捷鍵都管用
2、ContextMenuStrip:
右鍵菜單
在屬性 行為上ContextMeunStrip選擇您要關(guān)聯(lián)右鍵菜單,即可使用右鍵菜單,每一個(gè)控件都可以關(guān)聯(lián)右鍵菜單
3、StatusStript:
底部菜單
4、ToolStrip
工具條
5、ToolStripContainer
工具條容器
聯(lián)系客服