如何访问用 c# 中的函数创建的 object

how to access an object which made with a function in c#

我正在制作一个 c# windows 应用程序并尝试以编程方式在表单(例如 TextBox 和 Label)中创建 objects。我可以很容易地做到这一点,但我不能将它们定义为 public objects。我在名为“varstats”的 class 中有一个名为“makeTextBox(...)”的函数,这是函数:

public static void makeTextBox(Panel pnlMain, int offsetTop, int offsetRight, string strName = "")
    {
        TextBox txt = new TextBox();
        txt.Name = strName;
        txt.Parent = pnlMain;
        txt.AutoSize = true;
        txt.Width = (pnlMain.Width - 9 * defdis) / 3; //defdis is a public int and means default distance
        txt.Location = new Point(pnlMain.Width - txt.Width - defdis - offsetRight - 3, offsetTop + defdis);
    }

这是我在表单加载中的主要表单代码:

 varstats.makeTextBox(pnlMain, 0, 0, "txtCustName");

此功能运行良好 (:D),我可以在我的面板中看到文本框,但如何访问文本框?例如,在另一种形式中,我需要读取 TextBox 的文本 属性 并将其保存到我的数据库中?怎么做?

请注意,我无法在我的 class 的 header 中定义它们,因为我想使用 for 或 while 制作太多 objects 并且我还想删除它们并且在某些情况下再制作一些 objects。

最简单的方法是从您的方法中 return 文本框,然后使用它:

// return is changed from void to TextBox:
public static TextBox makeTextBox(Panel pnlMain, int offsetTop, int offsetRight, string strName = "")
{
    TextBox txt = new TextBox();
    txt.Name = strName;
    txt.Parent = pnlMain;
    txt.AutoSize = true;
    txt.Width = (pnlMain.Width - 9 * defdis) / 3; //defdis is a public int and means default distance
    txt.Location = new Point(pnlMain.Width - txt.Width - defdis - offsetRight - 3, offsetTop + defdis);

    // return the textbox you created:
    return txt;
}

现在您可以将方法的 return 值分配给变量并以任何您想要的方式使用它:

TextBox myTextBox = varstats.makeTextBox(pnlMain, 0, 0, "txtCustName");

// for example, change the text:
myTextBox.Text = "Changed Text";