作者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)