C#中的多窗体的问题

weiwei6054 2004-12-26 06:02:32
用VS.NET开发C#应用时,创建Windows应用程序,自动生成一个窗体Form1,主函数中有语句
Application.Run(new Form1());
向项目中添加一个新的窗体Form2,请问怎样在Form2生成对象form2中访问Form1中的数据与方法?
本人郁闷好久的一个问题了!
...全文
184 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
DotNetFreak 2004-12-27
  • 打赏
  • 举报
回复
yeah, i'm just stupid to waste my time on some sorry little shit like you while i can get US$50/hour after tax
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
将Form1中需被访问的数据设成public和static的属性
即搞定了
因为Form1类有些特殊,她其中包含有入口函数Main()
其他的窗体比这个应该更好搞定了

weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
愚人终于搞清楚了,多谢大家的讨论!
hanyaocsdn 2004-12-26
  • 打赏
  • 举报
回复
up
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
对, 仁兄k3world(雷锋)说得对,那个值始终时0

但是把在Form1中把i改成static 编译是不通过得啊!
你有什么好办法吗?
k3world 2004-12-26
  • 打赏
  • 举报
回复
是 "button1" + "0",所以是"button10"吧。
C#中没有全局变量的概念,你可以通过使用静态变量来实现。如果还有问题请继续。
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
在以上代码中:
在Fom1中把要访问的变量做成Static的
编译不会通过,我过去也是那样想的!
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
不知为不知,知之为知之!
英语水平差就不要在这儿卖了,千万不要自造单词,这样更让人觉得horrible
回去好好查差你的字典——concepturally ?
没有字典的话用这个:
http://cb.kingsoft.com/
强烈推荐国产软件
天外怪魔 2004-12-26
  • 打赏
  • 举报
回复
在Fom1中把要访问的变量做成Static的。
要用的时候这样:
Form1 f1 = New Form1();
....f1.Variable

DotNetFreak 2004-12-26
  • 打赏
  • 举报
回复
this is concepturally horrible to discuss such issue
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
好像加了那个构造函数还是不行啊,那个值仍然时初始,并不随之变化。
我的搞个简单的例子说明我的意思:
在Form1(主窗体)中声明一个变量 public int i = 0 ;
在工程工添加另外一个窗体Form2
在Form1上添加按钮和事件
private void button1_Click(object sender, System.EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
this.i = this.i + 10;
this.Text = i.ToString();//改变i的值
}


在Form2类中声明对象 public Form1 form1;
加上构造函数

public Form2(Form1 f):this()
{
form1 = f;
}
在Form2中添加按钮和事件

private void button1_Click(object sender, System.EventArgs e)
{
Form1 form1 = new Form1();
this.Text = form1.button1.Text;
this.Text = this.Text + form1.i;


}

在form2上显示i值始终时10

怎么样让它改变呢,各位大虾改一下吧!
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
加不加static 效果都一样!
lzhliang 2004-12-26
  • 打赏
  • 举报
回复
按照我得理解,赋值的时候应该是传递的内存地址,所以一个更新,另外一个自动更新。因为我在写多个form的东西的时候,都是自动更新的,并没有用到static。
zlopen 2004-12-26
  • 打赏
  • 举报
回复

改天试试
kqh0319 2004-12-26
  • 打赏
  • 举报
回复
将FORM1声明为static 的
weiwei6054 2004-12-26
  • 打赏
  • 举报
回复
多谢了,这样是可以访问的,但是若是再Form1的方法中改变了Form1中东西的之后,

再在Form2中访问的还是原来那个值,这个怎么解决呢?
lzhliang 2004-12-26
  • 打赏
  • 举报
回复
写一个在form2的constructor
在From2 中定义一个from1的变量
public Form2(Form1 f):this()
{
form1=f;
}
你就可以用Form1中的东西了

110,538

社区成员

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

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

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