[英]How to update contents of rich text box in form1 with values coming from form2 without closing form2?
我想在兩個窗體之間傳遞值(C#都處於活動狀態)。 我該怎么做?
我有兩種形式:Form1和Form2。
Form1包含一個富文本框和一個按鈕。 當我單擊該按鈕時,Form2應該打開,富文本框中的文本應該發送到Form2中的文本框,而Form1應該也保持打開狀態,並且位於Form2的背面。
Form2包含一個文本框和一個按鈕,用戶可以在其中編輯文本框中的文本,當用戶單擊按鈕時,應將已編輯的文本發送回Form1中的富文本框,並且Form2應該關閉/保持打開狀態,而Form1應該突出顯示富文本框中更新了文本。
我該怎么做? 有人可以幫我做一個簡單的例子嗎?
請根據需要更改字段名稱。 同樣,當更改form2中的textfield值時,以下代碼將同時更新富文本框值。 您可能需要進行一些小的更改,以在按鈕更改事件上觸發它。
將以下方法添加到From1
private void SetChildFromValueToParent(object obj, EventArgs args)
{
//Read the child form's control value and set it to parent form field
txtBox.Text = ((TextBox)(obj)).Value.ToString();
}
將以下邏輯添加到您的Form1
按鈕中,這將打開Form2
private void button1_Click(object sender, EventArgs e)
{
ChildForm childForm = new ChildForm();
//Find the textbox control in the child form
Control[] controls = childForm.Controls.Find("textBox", true);
if (null != controls[0])
{
//Bind the method in the parent form to child form text control's TextChanged event
controls[0].TextChanged += new System.EventHandler(SetChildFromValueToParent);
}
childForm.ShowDialog();
}
編輯-在按鈕單擊上獲取價值
private void SetChildFromValueToParent(object obj, EventArgs args)
{
//Read the child form's control value and set it to parent form field
Form2 from2 = new Form2();
string richTextBox.Text = ((TextBox)form2.Controls["textBox1"]).Text;
}
在某些方面,我更喜歡第一個答案,但這是一種可以幫助您理解兩種形式之間關系的方法。 注意:要使其正常工作,兩個Richtextbox都需要從private更改為internal:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.