标题:MDI中主窗体和子窗体传值问题
只看楼主
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
结帖率:100%
 问题点数:0 回复次数:9 
MDI中主窗体和子窗体传值问题
在MDI主窗体中设置一个变量i,希望在它的自窗体中能访问它,并且能够修改它,请问怎么做啊???
可以把i看作它们之间共享的变量!!
请问怎么做啊???!
搜索更多相关主题的帖子: 主窗体 MDI 传值 变量 中能 
2007-10-18 22:41
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
得分:0 

在new子窗体时把子窗体对象传过去 给i写个属性过程就能访问了


愛生活 && 愛編程
2007-10-18 23:03
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
得分:0 

晕,这样说太抽象,能不能写这个代码我看看


我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-10-19 08:02
枫飘天涯
Rank: 2
来 自:北京
等 级:新手上路
威 望:4
帖 子:251
专家分:0
注 册:2006-10-13
得分:0 
在父窗本中声明一个全局静态变量
这样子窗体不就可以修改和访问了

*、還⒋聼媽媽德話吧 晩點再戀愛吧
2007-10-19 08:48
zhjesse
Rank: 1
来 自:西藏拉萨
等 级:新手上路
帖 子:205
专家分:0
注 册:2007-4-3
得分:0 
public static int i;
public static string username;

想了解西藏的天葬文化、藏北比如骷髅墙吗?[url=http://www.]【雪域藏北论坛】[/url]给你诠释!
2007-10-19 12:20
andey
Rank: 2
等 级:新手上路
威 望:4
帖 子:938
专家分:0
注 册:2007-7-18
得分:0 
楼上说的也可以

嗯,在MainForm里的生成第二个窗体时:
SecondForm secondForm = new SecondForm(this);
secondForm.Show()

在SecondForm里的构造函数这样的

public SecondForm(MainForm tempForm)//这样写就是引用MainForm的对象
{
///
///其它代码;
///
this.mainForm = tempForm;
}

//一下的还是在SecondForm里的代码
//声明一个MainForm类型的变量..
private MainForm mainForm;//这个就是构造函数里的那个引用!


然后...就可以通过代码(或时间)来访问MainForm里的东东啦

例如:mainForm.i....
当然..i是public的..但不必要是static的..

msdn == 葵花宝典!!!
QQ:122768959
2007-10-19 12:23
xyb157
Rank: 1
等 级:新手上路
帖 子:148
专家分:0
注 册:2006-11-21
得分:0 

我觉得定义为全局更好.如果用ref和out 这2个函数来做行不行呢?


编程、在编程。。。。。爱学习、爱劳动才是个好孩子,老婆才会好好爱我
2007-10-19 12:33
guoxhvip
Rank: 8Rank: 8
来 自:聖西羅南看臺
等 级:贵宾
威 望:44
帖 子:4052
专家分:135
注 册:2006-10-8
得分:0 

静态变量虽然可以 但是也得考虑资源问题 静态变量的生命周期和应用程序一样 只要应用程序不结束它就一直存在 所以应该尽量避免使用静态变量:
Form1:MDI父窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
private int i;

public int I
{
get { return i; }
set { i = value; }
}
public Form1()
{
InitializeComponent();
}

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

Form2:子窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form2 : Form
{
private Form1 f1;
public Form2(Form1 f1)
{
this.f1 = f1;
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
f1.I = 5;
}

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

[此贴子已经被作者于2007-10-19 15:19:08编辑过]


愛生活 && 愛編程
2007-10-19 15:18
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
得分:0 
以下是引用zhjesse在2007-10-19 12:20:02的发言:
public static int i;
public static string username;

这个不错,简单好用!!!
全局静态变量!!


我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-10-19 15:59
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
得分:0 
以下是引用guoxhvip在2007-10-19 15:18:44的发言:

静态变量虽然可以 但是也得考虑资源问题 静态变量的生命周期和应用程序一样 只要应用程序不结束它就一直存在 所以应该尽量避免使用静态变量:
Form1:MDI父窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form1 : Form
{
private int i;

public int I
{
get { return i; }
set { i = value; }
}
public Form1()
{
InitializeComponent();
}

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

Form2:子窗体

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication1
{
public partial class Form2 : Form
{
private Form1 f1;
public Form2(Form1 f1)
{
this.f1 = f1;
InitializeComponent();
}

private void Form2_Load(object sender, EventArgs e)
{
f1.I = 5;
}

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



你的源码没错吧?我调试不成功!要不麻烦把你调试过的程序给我看看?发上来吧


我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2007-10-19 16:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-178893-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052499 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved