C#,两个窗体,当用户改变主窗体中TEXTBOX中内容时,子窗体TEXTBOX随之改变。
请用C#语言编写一个程序,建立两个窗口,每个窗口中放置一个TextBox控件,当用户改变第一个窗口中Textbox控件的文字内容是,另外一个窗口的TextBox的文字内容...
请用C#语言编写一个程序,建立两个窗口,每个窗口中放置一个TextBox控件,当用户改变第一个窗口中Textbox控件的文字内容是,另外一个窗口的TextBox的文字内容同步改变;
只有两个窗体,一个窗体中一个TEXTBOX。
要完整代码。 展开
只有两个窗体,一个窗体中一个TEXTBOX。
要完整代码。 展开
7个回答
展开全部
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();
}
/// <summary>
/// 用于子窗体修改主窗体的值
/// 这里方法定义为私有的,但是子窗体仍然可以通过公有的委托来调用
/// </summary>
/// <param name="text">从子窗体中获取的值</param>
private void SetTextValue(string text)
{
tbText.Text = text;
}
/// <summary>
///用于子窗体从主窗体中获取值
/// </summary>
/// <returns>子窗体从主窗体中获取的值</returns>
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);
}
}
}
namespace FormsDelegate
{
/*
1. 当数据是子窗体显示的必要条件的话,通过修改子窗体的构造函数来进行传递数据;
2. 如果是不定时的访问,则可以通过委托来实现。
*/
public delegate string GetText();
public delegate void SetText(string text);
public partial class MainForm : Form
{
SubForm subForm;
public MainForm()
{
InitializeComponent();
}
/// <summary>
/// 用于子窗体修改主窗体的值
/// 这里方法定义为私有的,但是子窗体仍然可以通过公有的委托来调用
/// </summary>
/// <param name="text">从子窗体中获取的值</param>
private void SetTextValue(string text)
{
tbText.Text = text;
}
/// <summary>
///用于子窗体从主窗体中获取值
/// </summary>
/// <returns>子窗体从主窗体中获取的值</returns>
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值以参数的形式传进去就行了。
不明白的话留言
父窗体中在TextBox的TextChange事件里面写代码
首先找到这个子窗体,然后调用这个窗体的这个方法,把父窗体的TextBox值以参数的形式传进去就行了。
不明白的话留言
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接放个Timer控件,定义个全局变量,修改值时改变变量,让子窗体的Timer控件监控变量,改变了,就传值过去,这样最简单了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询