紧急求助,关于全局变量在不同Form间的传递问题!!

yxp233 2009-12-24 09:33:38
建了两个Form: Form1 和 Form2,然后在这两个Form中各建了一个comoBox并分别命名为:comoBox_Form1 和 comoBox_Form2,然后我又在Form1里边创建了一个按钮button1.最后我给comoBox_Form1设定了1、2、3、4、5五个数可供选择,并且在属性里边设定Text为3。

我的目的是当我改变了comoBox_Form1的数值之后,点击button1,然后显示Form2并且给Form2里的comoBox_Form2赋予comoBox_Form1的数值。

我试着这么编了一下,但是只能把提前设定给comoBox_Form1的值(在属性里边设定的)赋给comoBox_Form2,无论我怎么改变comoBox_Form1的值,都是只能得到提前设定的值。而我想要的是当我改变comoBox_Form1的值后,comoBox_Form2也跟着变。

以下是我的代码,各位热心人请帮忙更正一下啊!

Form1的代码:

namespace Test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

public string str
{
get { return comboBox_Form1.Text; }
set { comboBox_Form1.Text = value; }
}

private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.Show();
}
}
}

Form2的代码:

namespace Test
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

Form1 Practice_design;

private void Form2_Load(object sender, EventArgs e)
{
Practice_design = new Form1();
comboBox_Form2.Text = Convert.ToString (Practice_design.str);
}
}
}
...全文
119 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
sssddfff 2009-12-24
  • 打赏
  • 举报
回复
学习
白头老汉 2009-12-24
  • 打赏
  • 举报
回复
如果仅仅是要给form2的控件赋个初值,那还是用带参数的构造函数比较方便;
或者在show之前给控件赋值也很方便。
白头老汉 2009-12-24
  • 打赏
  • 举报
回复
1,在form1中,把form1的对象传给form2
Form2 newfm = new Form2();
newfm.fa = this;
newfm.ShowDialog();
2,在form2中,用这个fa可以取得form1的控件,读取或设置form1控件的值
System.Windows.Forms.Control[] ctrltxt = fa.Controls.Find("textBox1",true);
System.Windows.Forms.TextBox txt = (System.Windows.Forms.TextBox)ctrltxt[0];
this.textBox1.Text = txt.Text;
nashina 2009-12-24
  • 打赏
  • 举报
回复
参考5楼 和4 楼的方法;

5楼说的很对, 你重新实例化了,所以值实际上没有传个form2;
4楼的方法比较常用,你用这个就行;

nalisaki 2009-12-24
  • 打赏
  • 举报
回复
我有一篇博客,csdn上的,自己总结了三四种(有代码)form之间的传值问题,都经过测试,算是自己的笔记吧。
cjnkd 2009-12-24
  • 打赏
  • 举报
回复
窗口之间的传值。
nalisaki 2009-12-24
  • 打赏
  • 举报
回复
在form1中用show(this)应该就可以了吧。在form2中就直接可以访问textBox_form1中的成员,属性应该也可以的。
shiweibingok 2009-12-24
  • 打赏
  • 举报
回复
学习
feixiang19822008 2009-12-24
  • 打赏
  • 举报
回复
1、在Form1中定义一个静态变量,在你改变了 的时候给这个变量赋值。
2、在Form2中同样定义一个变量,并增加一个带参数的构造函数,参数就是你定义的变量。
3、在Form1中new Form2时,使用参数的构造方法。如:Form2 f2 = new Form2(****);
4、在Form2的load事件中通过之前定义参数,先给 comboBox_Form2 赋值。
silentwins 2009-12-24
  • 打赏
  • 举报
回复
Practice_design = new Form1();
因为你这里重新实例化了Form1,所以它肯定是默认值的
你可以选择使用参数的形式传值,也可以用静态变量

        public static string strMyValue = "";
private void button1_Click(object sender, EventArgs e)
{
strMyValue = comboBox_Form1.Text
Form2 form = new Form2();
form.Show();
}

private void Form2_Load(object sender, EventArgs e)
{
comboBox_Form2.Text = Form1.MyValue;
}
menglingjun 2009-12-24
  • 打赏
  • 举报
回复
private void button1_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
//应该在这儿给Form2的comboBox_Form2赋值
comboBox_Form2.Text=comboBox_Form1.Text ;
form.Show();
}
yxp233 2009-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhouzhangkui 的回复:]
定義一個靜態的全局變量來傳遞窗體間的值
public static string AAA;
[/Quote]

我的目的是在Form1中定义全局变量,然后在Form1里改变全局变量的值,然后将改变了的值赋到Form2里边。
Return门徒 2009-12-24
  • 打赏
  • 举报
回复
一楼有学问~!jf
周药师 2009-12-24
  • 打赏
  • 举报
回复
定義一個靜態的全局變量來傳遞窗體間的值
public static string AAA;

111,120

社区成员

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

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

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