|
近一直很忙,今天才有空上论坛来看看,发现站长对于窗体之间传值的说法产生疑问,今天就此贴贴出我对窗体之间修改内容的方法贴出我的解决代码,由于本人技术水平有限,若有错误之处还望大侠指点,本人不胜感激!
好的废话少说,现在进入主题
首先我是看到站长的一篇相同问题解决办法的帖子时感觉解决办法过于麻烦,所以把我自己的这个方法贴出
【原帖】 form2窗体修改form1窗体内容问题
http://www.sufeinet.com/forum.php?mod=viewthread&tid=1273&fromuid=2968
下面是我的解决办法
首先我们建立两个窗体form1和form2,如图
分别修改每个窗体的各个控件的 Modified 属性
然后在form1的代码这样写:
[code=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
/// <summary>
/// 此处定义一个f2窗体类型变量,注意可见级别
/// </summary>
public Form2 f2;
private void button2_Click(object sender, EventArgs e)
{
f2 = new Form2();//初始化一个新的form2
f2.f1 = this;//将当前窗体做为变量值传递过去
f2.Show();//弹出form2窗体
button2.Enabled = false;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
f2.textBox1.Text = "你单击了form1窗体的按钮";
this.textBox1.Text = ""; //此处的文本控件是不一样的不要弄混了
}
catch
{
}
}
private void button3_Click(object sender, EventArgs e)
{
f2.Close();
}
}
}
[/code]
以下是form2的窗体代码
[code=csharp]using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication3
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
/// <summary>
/// 此处定义一个form1类型变量,注意可见级别
/// </summary>
public Form1 f1;
private void button1_Click(object sender, EventArgs e)
{
f1.textBox1.Text = "你单击了form2窗体的按钮";
this.textBox1.Text = ""; //此处的文本控件是不一样的不要弄混了
}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
f1.button2.Enabled = true;
}
}
}
[/code]
这样编译运行是可以通过的,如果你觉得这个有什么不足之处或你还有什么更好的方法,还望你可以指出大家一起交流
写的不好,还望不要见笑呵呵!
|
|