C# Winform多窗體&&構造函數傳值


一、多窗體:三種打開窗體的狀態:

最最基礎的彈窗:

//寫在按鈕的點擊事件內:
//實例需要彈出的窗口的類:
Form2 f2  = new Form2();
f2.Show();

1、彈窗窗口:

//實例化需要彈窗的類
Form2 f2 = new Form2();
f2.ShowDialog();
//此彈窗打開子彈窗后父級彈窗不可選中

2、子窗口:

//實例化Form2
Form2 f2 = new Form2();
//this代表這個類
//當前窗口的擁有f2
f2.Owner = this;
f3.Show();
//子彈窗默認置頂父級彈窗,對其他彈窗無影響;
//此彈窗子級彈窗和子級彈窗是平級的,可以互相覆蓋;

3、唯一窗口:

//判斷窗口有沒有開啟,沒開啟,開啟一個新的,開啟了,不做任何操作
//關閉變為沒開啟狀態
//在Form1聲明一個成員變量;
public List<From> FromList = nwe List<Form>();
//按鈕的點擊事件:
//實例化Form2的時候要把form1傳給Form2的構造函數;
Form2 f2 = new Form2(this);
bool a = false;
//遍歷FromList
foreach(From x in FromList)
{
//判斷,From2是否在FromList內,是返回true;
    if(x is From2)
        {
            a = true;
        }
}
//如果FromList內有From2...
if(a)
{
}
//如果沒有....
else
{
//把f2放到集合內,由於Form1,Form2等等,和Form都是繼承關系,所以...
    FormList.Add(f2);
    f2.Show();
}

//這里是Form2的類的構造函數:
//僅供提升作用域;
Form F1 = null;
//(From f1)的作用是傳值;
public From2(From f1)
{
    F1 = f1;
}
//在Form2的FormClosing事件中雙擊:
F1.FromList.Remove(this);

//打開:簡單的說,就是,先定義一個集合,把Form2放到一個集合內,遍歷個集合,如果is到了返回true,不作任何操作,is不到返回false,可以打開From2,在把From2扔到集合內;
//關閉了再打開就是把Form1自己,傳給Form2的構造函數,當Form2關閉的時候執行關閉前的事件:把自己從集合內Remove掉;

二、構造函數傳值:

簡單地說就是通過一個按鈕的點擊事件,在Form2實例化的過程中把From1的控件的值傳給From2的構造函數,再把值賦給相應的控件;

簡單的傳值:

//Form1的按鈕點擊事件內:
Form2 f2  = new Form(TextBox.Text);
From2.Show();
//From2的構造函數:引入一個String類型的變量
public Form2(string s)
        {
            InitializeComponent();
//賦值給From2的Label1,顯示出來的文字就是Form1的TextBox.Text;
            label1.Text = s;
        }

 


免責聲明!

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



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