close

有用Form的話,一定是不會只想一個專案只有一個Form的

不同Form間要怎麼切換和傳值呢

其實.. 我也不是很清楚,有一段還沒想到怎麼處理(後面會說明)

應該說我還在研究中,不過先提供一些小範例

1.一樣創件一個windowform專案

且在右邊新增,在加入一個form表單

1.png

2.png

2.在Form1建立一個button元件,在Form2建立一個button和label元件

3.png

3.這裡是把Form1當作原生的Form,From2是新開的

其中button是互相切換,Label只是為了傳數值而己

4.程式碼如下

a.Form1

int i = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();                              // 生成Form2物件
            form2.FormClosed += Form2_FormClosed;                   // 事件,form2關閉後
            form2.SetForm2Label = "YA~~" + i.ToString() ;           // 將 "YA~~"傳至Form2
            i++;
            form2.Visible = true;                                   // 顯示Form2
            this.Visible = false;                                   // 把Form1隱藏起來
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Visible = true;                                    // 顯示Form1
        }

5.png

b.Form2

public string SetForm2Label
{
     set
     {
         label1.Text = value;
     }
}
private void button1_Click(object sender, EventArgs e)
{
      this.Close();
}

4.png

5.概念如下

a.Form1

先建立一個新的Form2

Form2給他string到SetForm2Label,i為次數,只是為了讓他有點變動而己

在建立事件,當Form2關閉時,Form1會觸發動作

[這邊可以 "form2.FormClosed += "打到這後按Tab後面就會自動幫你生成,很方便]

然後顯示Form2,隱藏自己

b.Form2

SetForm2Label讀到Form1來的值,就把他寫入label裡

其實不一定要string,可以自己去轉換

按鈕就只是單純關閉自己

6.編譯結果

6.png

多按幾下就可以了,其實應該錄個影片比較清楚,不過反正自己寫一寫試一試就好了 ^^

 

 

 

PS:

其實我還沒研究的地方是

Form2 觸發 Form1的Function

所以我才用事件的方式處理

但是我自己覺得應該有更好的方向

如果有人知道的話,也可以留言跟我說一下,感謝

 

 

 

 

 

 

 

arrow
arrow
    文章標籤
    C# Form 傳值 切換
    全站熱搜
    創作者介紹
    創作者 阿寶子 的頭像
    阿寶子

    被程式耽誤的遊戲師

    阿寶子 發表在 痞客邦 留言(0) 人氣()