C#,两个窗体,当用户改变主窗体中TEXTBOX中内容时,子窗体TEXTBOX随之改变。

2024-11-02 11:31:26
有5个网友回答
网友(1):

简单。
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,搞定!

网友(2):

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);
}
}
}

网友(3):

第一个窗体定义个事件,然后在TextBox的SelectChanges事件中调用该事件的响应,第二个窗体定义一个方法去接受第一个窗体的事件,响应Text变化。很简单

网友(4):

子窗体写个public方法,用来修改TextBox值的

父窗体中在TextBox的TextChange事件里面写代码
首先找到这个子窗体,然后调用这个窗体的这个方法,把父窗体的TextBox值以参数的形式传进去就行了。

不明白的话留言

网友(5):

直接放个Timer控件,定义个全局变量,修改值时改变变量,让子窗体的Timer控件监控变量,改变了,就传值过去,这样最简单了。