在某些方面我更喜欢第一个答案,但这里有一种方法可以帮助您理解这两种形式之间的关系。注意:要使其正常工作,两个富文本框都需要从私有更改为内部:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnEditOnForm1_Click(object sender, EventArgs e)
{
var form2 = new Form2(richTextBoxOnForm1);
form2.richTextBoxOnForm2.Text = richTextBoxOnForm1.Text;
form2.ShowDialog(this);
}
}
和
public partial class Form2 : Form
{
private readonly RichTextBox _rtb;
public Form2(RichTextBox pRTB)
{
InitializeComponent();
_rtb = pRTB;
}
private void btnOkOnForm2_Click(object sender, EventArgs e)
{
_rtb.Text = richTextBoxOnForm2.Text;
this.Close();
}
private void btnCancelOnForm2_Click(object sender, EventArgs e)
{
this.Close();
}
}
请注意 Form2 如何需要对 Form1 上的 Richtextbox 的引用才能对其进行更新,因此您需要调整构造函数以接受该引用。
或者,您可以在 Form1 中创建一个合适的函数来更新 Richtextbox 那里,并使用调用它
private void btnOkOnForm2_Click(object sender, EventArgs e)
{
((Form1)this.Owner).UpdateRichTextBoxOnForm1(richTextBoxOnForm2.Text);
this.Close();
}
利用您在 ShowDialog 调用中包含发件人(“this”)这一事实
form2.ShowDialog(this);