2010-12-07 92 views
1

我有我的Windows窗體Main.cs和我的窗口形式Options.cs。在我的Main.cs中,我定義了一個名爲「Player」的類,並且在那裏實例化了它。如何使用c#訪問另一個窗體中的對象?

從我的選項表單我想能夠訪問我在Main.cs窗體中創建的Player對象的方法和屬性。 Visual Studio 2010告訴我「名稱」Player1「在當前上下文中不存在

我認爲這很奇怪,並且增加了我的困惑是事實上,我可以」看到「我的Player類的靜態方法。從Options.cs形式

預先感謝您

編輯:!

內Main.cs:

Player Player1 = new Player("Player 1", "X"); 
Player Player2 = new Player("Player 2", "O"); 

...

public class Player 
{ 
    public static bool Turn { get; set; } 
    public static int TotalGames { get; set; } 

    public string Name { get; set; } 
    public string Icon { get; set; } 

    public static void ToggleTurn() 
    { 
     Turn = !Turn; 
    } 

    public Player(string name, string icon) 
    { 
     Name = name; 
     Icon = icon; 
    } 

} 

內部Options.cs:

private void Options_Load(object sender, EventArgs e) 
{ 
    SetCheckboxesToPlayerTurn(); 
    txtPlayer1Name.Text = Player1.Name; //HERE IS WHAT I WANT :(
} 
+0

你能發佈代碼示例嗎?用簡短但具有代表性的方案來解決問題會更容易。 – Ani 2010-12-07 04:21:01

+0

完成!我評論了我想要做的事。在選項窗體上,我希望將文本框txtPlayer1Name.Text設置爲來自Player1對象的Name中的值。 – Robodude 2010-12-07 04:27:56

+0

訪問您的Player類屬性,您需要創建該類的一個實例,並且對於靜態屬性,不需要創建實例 – FosterZ 2010-12-07 04:29:58

回答

3

你需要以某種方式獲得從選項對話框您的播放器對象的引用。

改變這一行:

Player Player1 = new Player("Player 1", "X"); 

public Player Player1 = new Player("Player 1", "X"); 

和移動它的構造之外(如果這是它在哪裏)。 然後創建在選擇一個構造函數,接受主的一個實例,像這樣:

private Main main; 
public Options(Main main) 
{ 
    this.main=main; 
} 

現在,而不是用它創建選項是從主要默認的構造函數,使用(仍然是主):

Options o = new Options(this); 

您現在應該能夠使用從選項引用您的播放器:

string name = this.main.Player1.Name 
3
public static bool Turn { get; set; } 

表明這個變量在類的所有實例之間共享。所以你的轉身邏輯不會工作,因爲他們分享這個變量。

Visual Studio 2010中告訴我:「這個名字 ‘PLAYER1’並不在 當前上下文中。

因爲你宣佈你main.cs變量,一些Options.cs沒有訪問太。你需要做靜態變量,然後訪問這些。IE

public static Player Player1; 
public static Player Player2; 
public static main(){ 
    Player1 = new Player("Player 1", "X"); 
    Player2 = new Player("Player 2", "O"); 
    ... 
} 
0

使用存儲庫模式來獲得/創建的球員, 身份映射模式,用於存儲對玩家的生活引用 和服務定位器模式,可能在單例實例中用於全局訪問您的身份映射器。

對於遊戲全球靜態是好的,我想但是...

相關問題