日期:2014-05-18  浏览次数:21057 次

如何在一个窗体中修改另一个窗体的控件值和变量值。
如何在一个窗体中修改另一个窗体的控件值和变量值?
另一个窗体的控件和变量都设置为 public 了,但还是修改不了,有哪个老手知道呀。

如新窗体的代码如下, public partial class ChangInfo : Form
  {
  public ChangInfo()
  {
  InitializeComponent();
  }
  SaveInfo saveInfo = new SaveInfo();
  private void ChangInfo_Load(object sender, EventArgs e)
  {
  txtArea1.Text = saveInfo.Area1;
  txtArea2.Text = saveInfo.Area2;
  txtArea3.Text = saveInfo.Area3;
  txtArea4.Text = saveInfo.Area3;
  txtUrl1.Text = saveInfo.Url1;
  txtUrl2.Text = saveInfo.Url2;
  txtUrl3.Text = saveInfo.Url3;
  txtUrl4.Text = saveInfo.Url4;
  }

  private void btnOK1_Click(object sender, EventArgs e)
  {
  saveInfo.Area1 = txtArea1.Text;
  saveInfo.Url1 = txtUrl1.Text;
  }
  }
}

------解决方案--------------------
ChangInfo窗体改A窗体值。

新增ChangInfo构造函数
A a;
public ChangInfo(A a)
{
this.a = a;
}

//更改
private void btnOK1_Click(object sender, EventArgs e)
{
if (this.a != null)
{
//a.Valeu = newValue;
//a.TextBox.Text = "HI";
}
}


------解决方案--------------------
1.两个同级窗口
设置static变量
 eg:
form1
public static string str1;
from2
public static string str2;

form1中调用form2 
form2.str1 = "aaa";
fomr2中调用form1
form1.str2 = "fff";

2.父与子相互调用
formFather 
 函数
{
formSon frm = new formSon();
if(frm.showDialog() == DialogResult.OK)
{
//doSomething 这例子了不太对了。跑题了。这不算了啊
}
}
------解决方案--------------------
 

你可以把ChangInfo 中 txtarea1 的值通过SaveInfo 的构造方法传过去不就行了?

C# code

//SaveInfo 的构造:
  public SaveInfo (String txtArea,String txtUrl)
  {
         InitializeComponent();
         this. saveInfo.Area1 = txtArea;
         this. saveInfo..Url1= txtUrl;
  }


//ChangInfo 中:
SaveInfo saveInfo = new SaveInfo(txtArea1.Text,txtUrl1.Text);

------解决方案--------------------
第一种,把控件值和变量值都保存到对象中,然后在另一窗体中调对象,改值
第二种,把控件值和变量值传给另一个窗体
比如:form1里有控件值和变量值,另一个窗体是form2
在form1窗体中写form2 fm = new form2(控件值,变量值);
frm.show();

然后在form2的窗体构造函数中写
控件值类型 i;
变量值类型 j;
public form2(控件值类型 i,变量值类型 j) {
this.i = i;
this.i = j;
}
这是传值,不过要在form2中改变,
你要看看你的控件值和变量值是引用类型还是值类型