将工具控件连接到另一个表单(无效)

时间:2013-05-16 11:29:59

标签: c# winforms visual-studio-2010

我已经使用此代码将工具控件连接到another1:

--- Form1.cs

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

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2(this);
            frm.Show();
        }

        public string LabelText
        {
            get { return Lbl.Text; }
            set { Lbl.Text = value; }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }

--- Form2.cs

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

        private Form1 mainForm = null;
        public Form2(Form callingForm)
        {
            mainForm = callingForm as Form1;
            InitializeComponent();
        }

        private void Form2_Load(object sender, EventArgs e)
        {

        }



        private void timer1_Tick(object sender, EventArgs e)
        {
            this.mainForm.LabelText = txtMessage.Text;

            if (timer1.Enabled == true)
            {
                int line = 1 + richTextBox1.GetLineFromCharIndex(richTextBox1.GetFirstCharIndexOfCurrentLine());
                int column = 1 + richTextBox1.SelectionStart - richTextBox1.GetFirstCharIndexOfCurrentLine();
                txtMessage.Text = "line: " + line.ToString() + " , column: " + column.ToString();
            }
        }
    }

*****输出为**

enter image description here

Form2中的标签文本已连接到Form1。

所以它已经修好了。

现在我的问题是有没有办法可以对void函数做同样的方法?

我的意思是: 在Form1中,我得到了一个带有控件的1按钮: richTextBox1.Copy(); 那么这个控件将用于Form2上的richTextBox1。 (它将在Form2上的richtextbox中复制所选文本) 那可能吗?真的需要一个帮助。提前很多!

2 个答案:

答案 0 :(得分:1)

这里有一些东西让你入门:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        Form2 frm2 = new Form2(this);            
    }
}

并确保richTextBox1被声明为public

public partial class Form2 : Form
{
    Form1 sendingForm;

    public Form2(Form1 frm1)
    {
        InitializeComponent();
        sendingForm = frm1;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Text = sendingForm.richTextBox1.Text;
    }
}

这里做的是:使用对发件人Form2实例的引用初始化Form1实例,并使用该引用转到RichTextBox

编辑:

也许(!)这就是你要找的东西:

mainForm.richTextBox1.Copy();

答案 1 :(得分:0)

您将Form2的声明移至Class级别:

<强> - Form1中

    Form2 frm = null;

    private void button1_Click(object sender, EventArgs e)
    {
        frm = new Form2(this);
        frm.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (frm != null)
        {
            frm.CopyRichTextBox();
        }
    }

<强> - 窗体2

    public void CopyRichTextBox()
    {
        this.richTextBox1.Copy();
    }