C# 从其他类访问表单控件
我正在使用c#创建windows窗体应用程序。我的表单有标签、列表框和按钮,所有这些都需要编辑。它们是从另一个类编辑的,并且需要标签中的值来执行其他逻辑 我的问题是从其他类访问这些控件。我尝试创建表单的一个实例,并像这样使用它:C# 从其他类访问表单控件,c#,forms,C#,Forms,我正在使用c#创建windows窗体应用程序。我的表单有标签、列表框和按钮,所有这些都需要编辑。它们是从另一个类编辑的,并且需要标签中的值来执行其他逻辑 我的问题是从其他类访问这些控件。我尝试创建表单的一个实例,并像这样使用它: Form frm=new Form(); myVar=frm.lblMylabel.Text 但是,我使用断点跟踪代码,它在上面创建的实例和表单代码的开头之间循环,表单代码在创建实例的地方再次调用类 我曾试图在网上找到答案,但它们似乎不适用于我正在尝试做的事情,虽然我不
Form frm=new Form();
myVar=frm.lblMylabel.Text代码>
但是,我使用断点跟踪代码,它在上面创建的实例和表单代码的开头之间循环,表单代码在创建实例的地方再次调用类
我曾试图在网上找到答案,但它们似乎不适用于我正在尝试做的事情,虽然我不确定如何做,但它们似乎过于复杂。
所以,我的问题是:有没有一种相对简单的方法可以从另一个类的窗体中访问和编辑控件中的值
提前谢谢
编辑-断点从点3开始,'=new Form();'
循环到点1
第2点调用GamePlay()
到达第3点并重新开始循环
public partial class frmGame : Form //Point 1
{
public frmGame()
{
InitializeComponent();
Game.GamePlay(); //Point 2
}
class Game{
public static void GamePlay()
{
frmGame form = new frmGame(); //Point 3
form.lstPrevious1.Items.Add("Item Number");
}
}
您的问题与访问其他类的属性无关,您只是在生成一个递归循环:
在第3点
,在方法游戏性
中,您创建了frmGame
的新实例。创建实例(对象)时,将调用其构造函数
。在本例中,构造函数是方法public frmGame()
在这个构造函数中,您现在调用GamePlay
(point2
),正如我们之前看到的,它再次创建了frmGame
的一个新实例(point3
),也再次调用了它的构造函数(point1
)
此时,您已经创建了两个表单(尽管尚未显示)
很快您将收到堆栈溢出
一种可能的解决方案:将创建实例的行移动到另一个方法中,该方法保证在程序启动时只调用一次:
public partial class frmGame : Form //Point 1
{
public frmGame()
{
InitializeComponent();
Game.GamePlay(); //Point 2
}
}
class Game{
public static void GameStart(){
frmGame form = new frmGame(); //Point 3
}
public static void GamePlay()
{
form.lstPrevious1.Items.Add("Item Number");
}
}
欢迎来到stackoverflow。请在此处发布您的问题的摘要。谢谢,我已将问题编辑为包含一个。如果我理解速度慢,很抱歉,但是如果我使用其他方法创建实例,如何确保只调用一次?由于每次创建实例时都会调用类frmGame
,因此会从该类的顶部开始执行代码。但是,由于该类是代码的起点,因此用于创建实例的方法必须从frmGame
中的某个位置调用,或者从frmGame
调用另一个方法?它不能调用类,它只调用一个方法。在本例中,Game.GamePlay
。但是在Game.GameStart
中完成表单创建后,它将不会再次递归。我如何不在构造函数中调用Game.GameStart
方法?您可以这样做,通过将对象创建移出该方法,您不会在此处创建循环