形式的沟通

本文关键字: | 更新日期: 2023-09-27 18:17:32

我有两个表单,包括:

Form1:

2按钮命名:btnCopy和btnPaste(内部有函数,如rtb.Copy();和rtb.Paste ();这应该为richtextbox在Form2)

Form2:

我的问题是:我如何从Form1(及其功能)和Form2中的richtextbox之间的2按钮通信。

喜欢:当我在richtextbox(rtb)在Form2中输入文本时,然后我选择文本,然后我从Form1中按下CopyButton(btnCopy),文本应该复制相同,当我从Form1中按下PasteButton(btnPaste),已经复制的文本应该粘贴在richtextbox(rtb),可以在Form2中找到。

我该怎么做呢?

形式的沟通

假设您有Form1ToolStrip Button的名称PasteToolStripButton,如:

  public partial class Form1 : Form
{
    Form2 formChild;
    public Form1()
    {
        InitializeComponent();
        this.Load += new EventHandler(Form1_Load);
    }
    void Form1_Load(object sender, EventArgs e)
    {
       formChild = new Form2();
       formChild.MdiParent = this;
       formChild.Show();            
    }

   private void CopyToolStripButton_Click(object sender, EventArgs e)
    {
        formChild.CopyText(); // Method to copy Rich Text Box in Form2
    }
    private void PasteToolStripButton_Click(object sender, EventArgs e)
    {
        formChild.PasteText(); // Method in Form2 to Paste to the RichTextBox in Form2
    }

}

在您的Form2中,您需要添加名为PasteTextCopyTextPublic方法,如:

  public void PasteText()
  {
     rtbChild.Text = Clipboard.GetText(); // this one simulates the rtb.Paste()
  }
  public void CopyText()
  {
     rtb.Copy(); 
  }

我还将Form2中的RichTextBox命名为rtbChild,因此每次点击粘贴都会复制到Form2中的RichTextBox

在Form1上创建一个公共属性,然后从Form2设置它。编辑:在Form1:公共字符串TextForRTB {get;设置;}

Form2:Form1 a = new Form1();

Sol1:将一个表单传递给另一个表单,如构造函数中的Form1(Form parent){....},然后您应该看到它的公共属性和方法。

Sol2:创建自定义事件,当富文本框上的文本发生变化时引发它,因此,使用这个富文本框初始化表单的表单将做一些事情,如启用/禁用按钮或其他

…实际上,对于这种行为有很多解决方案,我想知道为什么您需要将文本框置于与按钮不同的形式中,这些按钮在业务逻辑中似乎非常紧密地联系在一起!

可以在Form2中公开GetRichTextBoxContentSetRichTextBoxContent两个方法。这将在Form2中更新richTextBox的内容。

然后你可以在Form1

Form2Instance上工作

注:这里的主要想法是如何得到Form2Instance。获取该实例取决于您的实现。

public class Form2 : Form
{
    public string GetRichTextBoxContent()
    {
        return this.richTextBox1.Text;
    }
    public void SetRichTextBoxContent(string content)
    {
        this.richTextBox1.Text = content;
    } 
}
public class Form1 : Form
{
    //Based on your implementation 
    Form2 form2 = new Form2();
    private void Button_CopyClick(object sender, EventArgs e)
    {
        var contentFromRtb = form2.GetRichTextBoxContent();
    } 
    private void Button_PasteClick(object sender, EventArgs e)
    {
        var someContent = "Content to be copied to text box"
        form2.SetRichTextBoxContent(someContent );
    } 
}
相关文章:
  • 没有找到相关文章