作者chrishappy11 ()
看板C_Sharp
標題[問題] 請問如何在不同form裡控制變數???
時間Sun Apr 28 21:44:14 2013
抱歉
小弟弟算是程式新手
我寫2個表單Form1, Form2
打算在form2設定一個按鍵讓form1裡的一個布林變數打開
我的做法是這樣,請各位高手幫我看看是不是那裡錯了
先在Form1裡宣告一個公用變數開關
按Form1裡的button 會跳出form2:
public partial class Form1 : Form
{
public bool a = false;
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = new Form2();
f2.Owner = this;
}
}
而form2裡也設定一個button, 按下去讓form1的a打開:
private void button1_Click(object sender, EventArgs e)
{
Form1 f1 = (Form1)this.Owner;
f1.a=true;
this.close();
}
照裡來說, 應該回到form1裡, a會是true才對啊???
為啥我在執行時會出現錯誤呢?
請各位高手幫幫忙...謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 119.14.168.8
1F:推 largesperm:妳用 new 就是新的 instance 了 不是原本的 form1 04/28 23:02
2F:→ largesperm:你要把整個 form 或是 boolean 傳過去 04/28 23:02
3F:推 largesperm:啊 看錯 忽略第一個推文 04/28 23:04
4F:→ largesperm:我都是把要改變的變數或是整個 form 傳給另一個 form 04/28 23:05
5F:→ largesperm:你的 this.Owner 第一次看到 剛剛 google 了一下 好像 04/28 23:07
6F:→ largesperm:可以耶 哈哈 不好意思 04/28 23:07
7F:→ largesperm:嗯 這種方法真酷! 多謝 不過正解還請其他前輩解惑 04/28 23:12
8F:→ evirtues:怎樣的錯誤? 這方法是對的,a的確會被改成true 04/29 00:34
9F:→ evirtues:如果我猜的沒錯 你應該要注意Show()和ShowDialog()的差異 04/29 00:38
Compile沒問題, 但我按下form2 的button時就有錯誤了
錯誤訊息是An unhandled exception of type 'System.NullReferenceException' occurred in ADW_Map.exe
Additional information: Object reference not set to an instance of an object.
※ 編輯: chrishappy11 來自: 119.14.168.8 (04/29 08:03)
10F:推 Ansaga:做一個Static物件專門存變數讓兩個form直接取如何 04/29 09:01
11F:→ evirtues:你的f2.Show()寫在哪裡? 04/29 10:02
12F:→ evirtues:你這樣的寫法 f2.Show()也只能在Form1的button1_Click內 04/29 10:07
13F:推 gmoz:form2裡面宣告一個form1 再把from1丟進去不就好了 04/29 17:34
問題已解決...感謝
我自己key錯行...哈哈
※ 編輯: chrishappy11 來自: 119.14.168.8 (04/29 19:55)