如何访问用 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";
我正在制作一个 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";