簡體   English   中英

從不同的類訪問表單控件

[英]Accessing form controls from a different class

我正在使用c#創建Windows窗體應用程序。 我的表單具有標簽,列表框和按鈕,所有這些都需要進行編輯。 它們是從不同的類進行編輯的,並且進一步需要標簽中的值來執行其他邏輯。

我的問題是從其他類訪問這些控件。 我嘗試制作表單的實例並像這樣使用它:

Form frm = new Form(); myVar = frm.lblMylabel.Text;

但是,使用斷點,我遵循了代碼,並且在上面創建的實例與Form代碼的開頭之間循環,后者再次調用創建實例的類。

我試圖在網上找到答案,但是它們似乎不適用於我想做的事情,盡管我不確定該怎么做,但它們似乎過於復雜。 所以,我的問題是:有沒有一種相對簡單的方法可以訪問值並以另一個類的形式編輯控件中的值?

提前致謝。

編輯-斷點從點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");

    }
}

您的問題與訪問其他類的屬性無關,您只是在生成一個遞歸循環:

Point 3 ,在方法中GamePlay ,你創建的新實例frmGame 創建實例(對象)時,將調用其constructor 在這種情況下,構造函數是方法public frmGame()

在此構造函數中,您現在調用GamePlayPoint 2 ),正如我們從前面看到的那樣,它再次創建frmGame的新實例(再次Point 3 ),並再次調用其構造函數( Point 1 )。

此時,您已經創建了兩個表單(盡管尚未顯示)。

很快您將收到堆棧溢出。

一種可能的解決方案:將創建實例的行移到另一種方法中,該方法保證在程序啟動時僅被調用一次:

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");    
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM