简单。
TextBox tb=new TextBox();
public Form2(TextBox TB)
{//构造函数
tb=TB;
……
}
然后textBox1的keyup方法写:
tb.Text=textBox1.Text
最后,Form1中调用Form2的方法:
Form2 f2=new Form2(textBox1);
f2.Show();
OK,搞定!
C# code
namespace FormsDelegate
{
/*
1. 当数据是子窗体显示的必要条件的话,通过修改子窗体的构造函数来进行传递数据;
2. 如果是不定时的访问,则可以通过委托来实现。
*/
public delegate string GetText();
public delegate void SetText(string text);
public partial class MainForm : Form
{
SubForm subForm;
public MainForm()
{
InitializeComponent();
}
///
/// 用于子窗体修改主窗体的值
/// 这里方法定义为私有的,但是子窗体仍然可以通过公有的委托来调用
///
/// 从子窗体中获取的值
private void SetTextValue(string text)
{
tbText.Text = text;
}
///
///用于子窗体从主窗体中获取值
///
///
private string GetTextValue()
{
return tbText.Text;
}
private void btnOK_Click(object sender, EventArgs e)
{
//通过委托来进行两个窗体的互操作
subForm = new SubForm(this.GetTextValue, this.SetTextValue);
//通过给子窗体传递主窗体的对象或值来互操作
//subForm = new SubForm(this);
subForm.ShowDialog();
}
}
}
C# code
namespace FormsDelegate
{
public partial class SubForm : Form
{
private GetText getTextValue = null;
private SetText setTextValue = null;
private MainForm mainForm = null;
public SubForm(GetText getText,SetText setText)
{
InitializeComponent();
this.getTextValue = getText;
this.setTextValue = setText;
this.tbText.Text = this.getTextValue();
}
public SubForm(MainForm mainForm)
{
InitializeComponent();
this.mainForm = mainForm;
}
private void btnOK_Click(object sender, EventArgs e)
{
this.setTextValue(this.tbText.Text);
}
}
}
第一个窗体定义个事件,然后在TextBox的SelectChanges事件中调用该事件的响应,第二个窗体定义一个方法去接受第一个窗体的事件,响应Text变化。很简单
子窗体写个public方法,用来修改TextBox值的
父窗体中在TextBox的TextChange事件里面写代码
首先找到这个子窗体,然后调用这个窗体的这个方法,把父窗体的TextBox值以参数的形式传进去就行了。
不明白的话留言
直接放个Timer控件,定义个全局变量,修改值时改变变量,让子窗体的Timer控件监控变量,改变了,就传值过去,这样最简单了。