如何访问用c#中的函数创建的对象
Posted
技术标签:
【中文标题】如何访问用c#中的函数创建的对象【英文标题】:how to access an object which made with a function in c# 【发布时间】:2016-09-18 10:50:01 【问题描述】:我正在制作一个 c# windows 应用程序并尝试以编程方式创建表单中的对象(例如 TextBox 和 Label)。我可以很容易地做到这一点,但我不能将它们定义为公共对象。我在一个名为“varstats
”的类中有一个名为“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,但是如何访问 TextBox?例如,在另一种形式中,我需要读取 TextBox 的文本属性并将其保存到我的数据库中?如何做到这一点?
请注意,我无法在类的标题中定义它们,因为我想使用 for 或 while 创建太多对象,并且在某些情况下我想删除它们并创建一些其他对象。
【问题讨论】:
【参考方案1】:最简单的方法是从您的方法中返回文本框,然后使用它:
// 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;
现在您可以将方法的返回值分配给变量,并以任何您想要的方式使用它:
TextBox myTextBox = varstats.makeTextBox(pnlMain, 0, 0, "txtCustName");
// for example, change the text:
myTextBox.Text = "Changed Text";
【讨论】:
这是个好主意,但我有另一个名为preparePanel
的函数,这个函数使太多不同类型的控件(TextBox、Label、DataGridView、...),这个函数使用函数 makeLabel
和....我应该在preparePanel
函数中返回一组不同的控件。有可能有这样的数组吗?
我找到了答案 (Here)。谢谢您的回答。 :)以上是关于如何访问用c#中的函数创建的对象的主要内容,如果未能解决你的问题,请参考以下文章
如何创建一个可以操作同一类的多个对象的函数,访问 C++ 中的私有属性?