我有一个应用程序,以一种形式(Form1)我有很多复选框和文本框,在 Form2 中我只有一个文本框,但我想从 Form1 文本框中放入一些内容并放入 Form2 文本框,就像这样,但在表单之间:

textBox1.Text = "Test: " + textBox1 + "\n" + textBox3;

作为 textBox1 中的 Form2textBox1 中的第二个 textBox3Form1 ,但我该怎么做?谢谢。

最佳答案

根据您启动第二个表单的方式,您可以在 Form2 中分配一个引用 Form1 的成员对象,或者如果您使用的是 MDI 接口(interface),则有一个表单集合,您可以从中检索对 Form1 的引用。

例如,您可以在 Form2 类中包含以下代码:

public partial class Form2 : Form
{
    public Form1 LaunchOrigin { get; set; }
    // and so on

现在,您可以在启动 Form2 时分配 LaunchOrigin 成员。下面是一个例子:
Form2 newForm = new Form2();
newForm.LaunchOrigin = this;
newForm.Show();

您现在可以访问 Form1 及其所有成员。这是一个简单的例子:
    private void Form2_Load(object sender, EventArgs e)
    {
        this.Text = LaunchOrigin.Text;
    }

您必须记住,控件被声明为私有(private)的,因此您将无法直接访问它们。您可以在Form1上写一个引用该控件的属性,但这通常是一个坏主意。但是,为了完整起见,可以使用以下代码在Form1上公开按钮:
public partial class Form1 : Form
{
    public Button theButton;
    public Form1()
    {
        InitializeComponent();
        theButton = button1; // where button1 is what I dragged on
    }
    // and so on

尽管您所要求的相对容易实现,但它会使您走上一些脆弱的应用程序结构之路。仔细考虑一下您要在表单之间公开什么,也许它应该是一种可以绑定(bind)到两种表单的独特类型,以便一旦更改基础类型,就可以更改两者的表示形式。

关于c# - 将一种形式的控件用于另一种形式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1736444/

10-13 07:56