[英]How do I access an object in another windows form using c#?
我有Windows窗體Main.cs和Windows窗體Options.cs。 在Main.cs中,我定義了一個名為“ Player”的類,並在其中實例化了該類。
從“選項”表單中,我希望能夠訪問在Main.cs表單中創建的Player對象的方法和屬性。 Visual Studio 2010告訴我“名稱”“ Player1”在當前上下文中不存在。
我認為很奇怪,而且讓我感到困惑的是,我可以從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 :(
}
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");
...
}
您需要以某種方式從“選項”表單中獲得對您的Player對象的引用。
更改此行:
Player Player1 = new Player("Player 1", "X");
至
public Player Player1 = new Player("Player 1", "X");
並將其移到構造函數之外(如果它在此處)。 然后在Options中創建一個接受Main實例的構造函數,如下所示:
private Main main;
public Options(Main main)
{
this.main=main;
}
現在,不要使用Main的默認構造函數來創建Options,而要使用(仍然在Main中):
Options o = new Options(this);
現在,您應該能夠使用以下選項從“選項”中引用您的播放器:
string name = this.main.Player1.Name
使用存儲庫模式來獲取/創建玩家,使用身份映射圖模式來存儲對播放器的實時引用,以及使用服務定位器模式,可能在單例中以全局方式訪問您的身份映射器。
對於游戲來說,全球靜態很好,但我認為...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.