winform(多窗體、菜單和工具欄)


一、多窗體

1、哪個是主窗體

利用From1的button將From2打開

private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
            this.Hide();//打開From2時,隱藏From1
        }


光那樣出現的問題:主窗體隱藏了,關閉其它窗體后,沒有將主窗體顯示/關閉,那么程序就關不上了

(1)、構造函數傳值,將窗體傳到另一個窗體中去

 首先打開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、窗體只能打開一個

在From1中創建一個全局的泛型集合,為了放置全部打開的窗體

List<Form> flist = new List<Form>();
(1)、在窗體打開之前,判斷集合中是否有name一致的窗體,如果有就說明已經打開了,就不要再打開了

將From1中button1的點擊事件改為

bool has=false;//From2是否已被打開一次
            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();
            }

問題:當窗體打開了,關閉后,就無法再次打開了
辦法:當窗體關閉時,清除Form1中集合中的此窗體對象記錄
首先在from 1添加一個函數

 public void deleteFrom(Form F)
        {
            flist.Remove(F);
        }

然后在From2的FormClosing事件中改為

 if(F1!=null)
            {
                F1.deleteFrom(this);
            }

問題:當窗體已經打開,再次點擊打開按鈕,不會將已打開的窗體重新顯示並焦點進入
辦法:
找到已打開對象,將WindowState屬性設置為:
找到已打開窗體的對象,使用Focus方法;

在From1中button1的點擊事件中if(has){}中添加“ f2.Close();”,它起到釋放內存的作用

if(F.Name==f2.Name){has = true;}true;后添加F.WindowState = FormWindowState.Normal;//最小化或最大化時點擊按鈕恢復正常大小
F.Focus();//焦點進入

3、窗體之間的傳值和控制

傳值:構造函數傳值

將From2的構造函數改為

public Form2(Form1 f1,string uname)
{
InitializeComponent();
F1 = f1;

label1.Text = "歡迎回來," + uname;
}

在From1中改為  Form2 f2 = new Form2(this,textBox1.Text);

控制:第一步,找到窗體對象,第二步,將窗體對象的控件值更改
注意:要將窗體中的對象訪問權限修改為public

在From2中添加新建一個按鈕和文本框,點擊此按鈕的點擊事件,添加if(F1!=null){F1.button1.Text=Textbox1.Text}
4、提示框類型的窗體

ShowDialog();

修改地方:

 Form2 f2 = new Form2(this,textBox1.Text);
            f2.ShowDialog();

作用:

將窗體顯示為模式對話框。 在調用Form.ShowDialog方法后,直到關閉對話框后,才執行此方法后面的代碼

 二、菜單和工具欄

1、MenuStrip:
頂部菜單,可右鍵點擊插入標准項
分割線:1、- 2、右鍵插入Separator

快捷鍵:每一個項右鍵屬性最下面ShortcuKeys可以設置快捷鍵,ShowShortcuKeys是否在該項上顯示快捷鍵
不管選項隱藏還是菜單隱藏,快捷鍵都管用

2、ContextMenuStrip:
右鍵菜單

在屬性 行為上ContextMeunStrip選擇您要關聯右鍵菜單,即可使用右鍵菜單,每一個控件都可以關聯右鍵菜單

3、StatusStript:
底部菜單

4、ToolStrip
工具條

5、ToolStripContainer
工具條容器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM