1

WinForms アプリケーションがあります。form2のボタンを押すと、form1のrichtextboxに反映されるようにしたいと思います。

たとえば、form2 のボタンがクリックされたときに「Hello」と入力するようにコーディングされている場合、form1 のリッチテキスト ボックスに「Hello」というテキストが表示されるようにします。

どうすればこれを行うことができますか?オンラインで検索しましたが、何も見つかりません。

フォーム1

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Text;
using System.Drawing.Printing;
using System.Diagnostics;


namespace Basic_Word_Processor_Version1._0._0
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            Instance = this;
        }
            private string filepath = null;
        private int checkPrint;

コード

 public static Form1 Instance { get; private set; }

        // You still need this like in the first scenario.
        public RichTextBox RichTextBox1 { get { return richTextBoxPrintCtrl1; } }

        // This constructor should already exist. Just add the one line to it.


    }

Form3

    using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Basic_Word_Processor_Version1._0._0
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        Form1.Instance.richTextBoxPrintCtrl1.Text = "";
    }
    public partial class Form1 : Form
{
    public static Form1 Instance { get; private set; }
    public RichTextBox RichTextBox1 { get { return richTextBoxPrintCtrl1; } }

    public Form1()
    {
        InitializeComponent();
        Instance = this;
    }
}
4

2 に答える 2

3

プロパティを介してコントロールを公開できます。form2 に form1 への参照があるとします。

フォーム1:

public RichTextBox PrintCtrl1 { get { return richTextBoxPrintCtrl1; } }

フォーム2:

form1.PrintCtrl1.Text = "Howdy from form2.";

更新: form2 に form1 への参照がない場合は、静的プロパティを介して form1 のインスタンスを公開することもできます。

フォーム1:

public static Form1 Instance { get; private set; }

// You still need this like in the first scenario.
public RichTextBox PrintCtrl1 { get { return richTextBoxPrintCtrl1; } }

// This constructor should already exist. Just add the one line to it.
public Form1()
{
    Instance = this;
}

そして、form2 では、上記の代わりに次のようにします。

Form1.Instance.PrintCtrl1.Text = "Howdy from form2.";

Form1 クラスは次のようになります (さらに、追加したものすべて)。

public partial class Form1 : Form
{
    public static Form1 Instance { get; private set; }
    public RichTextBox PrintCtrl1 { get { return richTextBoxPrintCtrl1; } }

    public Form1()
    {
        InitializeComponent();
        Instance = this;
    }
}

Form3 クラスは次のようになります。

public partial class Form3 : Form
{
    public Form3()
    {
        InitializeComponent();
    }

    protected void button1_Click(object sender, EventArgs e)
    {
        Form1.Instance.PrintCtrl1.Text = "";
    }
}
于 2013-04-03T21:00:13.220 に答える