窗体间的值传递

ericllzh 2008-04-13 12:38:58
1问:如FORM1.FORM2.
FORM1是开者的.当FORM2加载的时候.修改FORM1的一个全局变量.就这么简单.怎么做呢?
2问:
如果FORM1判断FORM2的一个图片框是否有图片.那改如何判断呢?

谢谢
1问10分
...全文
121 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhantianyou 2008-04-14
  • 打赏
  • 举报
回复
同意楼上.form.visible
ericllzh 2008-04-14
  • 打赏
  • 举报
回复
噢。。谢谢。可是分数已经给出去了。不好意思啊
dancingbit 2008-04-13
  • 打赏
  • 举报
回复
1.Form1的该变量设为public,不过最好是在Form2中定义相应的属性,Form2关闭后Form1中可读取该属性。
2.Form2中设计一个方法或属性,Form1可以通过该方法或属性来获取。
lake_cx 2008-04-13
  • 打赏
  • 举报
回复
1、Form2提供事件,告诉Form1发生了什么事,Form1来操作自己的变量
2、访问Form2的一个公开属性或方法,请Form2告诉它
不慕沙卡拉卡 2008-04-13
  • 打赏
  • 举报
回复
问题1
在属性中再加上get()访问器属性试试
如:
int i=0;
public int ii
{
set
{
i = value;
}
get
{
return i;
}
}

dancingbit 2008-04-13
  • 打赏
  • 举报
回复
form1.Visible
ericllzh 2008-04-13
  • 打赏
  • 举报
回复
问题1.我照着打还是错.结果,在FORM1里的i还是0;并没有改变,为什么呢?
难道因为我的是2005版?
ericllzh 2008-04-13
  • 打赏
  • 举报
回复
谢谢了。

结分了。


我在有一个案例。希望有人帮下忙。

有没有什么方法能够判断一个FROM是已经SHOW了出来呢?
itfutao 2008-04-13
  • 打赏
  • 举报
回复
第二个问题也可以用属性来搞定.
form2中代码

int i=0;
int ii=0;
public int ii
{
get
{
i = ii;
}
}

在form2的窗体载入事件中添加代码

if(this.pictureBox1.Image == null)
{
ii=0;
}
else
{
ii=1
}

在form1中对form2的i属性盘点即可以知道图片框中是否有图片了.

form2 frm=new form2();
if (frm.i==0)
{messagebox.show("无图片");}
else
{messagebox.show("有图片");}

这只是一种方法.还可以利用构造函数来实现...窗体间传值能够实现的方法很多很多.
itfutao 2008-04-13
  • 打赏
  • 举报
回复
晕.上面的事件少打了_Load.呵呵.

private void form2_Load(object sender, EventArgs e)
{
form1 frm=new form1();
frm.ii=3;
}

itfutao 2008-04-13
  • 打赏
  • 举报
回复
第一个问题
可以用属性来实现
在form1中定义一个属性.

int i=0;
public int ii
{
set
{
i = value;
}
}

在form2的载人事件中对form1的ii属性赋值就ok了.

private void form2(object sender, EventArgs e)
{
form1 frm=new form1();
frm.ii=3;
}
marvelstack 2008-04-13
  • 打赏
  • 举报
回复
Windows窗体间的数据交互
http://blog.csdn.net/zhzuo/archive/2004/04/05/22027.aspx
窗体的参数传递
http://blog.csdn.net/zhzuo/archive/2006/05/05/708941.aspx#sec5
ou108 2008-04-13
  • 打赏
  • 举报
回复
传参就是了
最简单的方法
ericllzh 2008-04-13
  • 打赏
  • 举报
回复
f2不是f1NEW出来的.
1.2楼的方法我试过.好像不行.能举个例子看下吗?
ericllzh 2008-04-13
  • 打赏
  • 举报
回复
f2不是f1NEW出来的.
1.2楼的方法我试过.好像不行.能举个例子看下吗?
zhantianyou 2008-04-13
  • 打赏
  • 举报
回复
如果变量是数值类型就用Ref传参!引用就不用。或者把Form1传到Form2,直接修改,但不推介这么做
fuda_1985 2008-04-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lake_cx 的回复:]
1、Form2提供事件,告诉Form1发生了什么事,Form1来操作自己的变量
2、访问Form2的一个公开属性或方法,请Form2告诉它
[/Quote]
dancingbit 2008-04-13
  • 打赏
  • 举报
回复

form2 code

namespace senvalu
{
public partial class Form2 : Form
{
private Form1 f;
public Form2()
{
InitializeComponent();
}

public Form1 F
{
get
{
return f;
}
set
{
f=value;
}
}

private void button1_Click(object sender, EventArgs e)
{

}

private void Form2_Load(object sender, EventArgs e)
{
// Form1 frm = new Form1();
// frm.ii = 2;
f.ii=2;
}
}
}


form1 code
namespace senvalu
{
public partial class Form1 : Form
{
int i = 0;
public int ii
{
set
{
i = value;
}
get
{
return i;
}
}

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Form2 fo=new Form2();
fo.F=this;
fo.Show();
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show( ii.ToString());
}
}
}

给你改成这样,你再试试看。
dancingbit 2008-04-13
  • 打赏
  • 举报
回复
在Form2中new一个Form1,在Form1中new一个Form2,而且,在Form2中new出来的Form1甚至没有Show,很难弄明白到底是要干什么。
wangchao1982 2008-04-13
  • 打赏
  • 举报
回复
f2是f1new出来的么?如果是的话,可以new f2的时候用ref传值(如果是引用类型就不用ref了),这样不就可以在f2中修改f1的东西了么
加载更多回复(1)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧