c# - 如何使用 C# 访问另一个 Windows 窗体中的对象?

标签 c#

我有我的 Windows 窗体 Main.cs 和我的 Windows 窗体 Options.cs。在我的 Main.cs 中,我定义了一个名为“Player”的类,并在那里实例化了它。

我希望能够从我的 Options 表单访问我在 Main.cs 表单中创建的 Player 对象的方法和属性。 Visual Studio 2010 告诉我“名称“Player1”在当前上下文中不存在。

我觉得很奇怪而且让我更加困惑的是我可以从 Options.cs 表单中“看到”我的 Player 类的静态方法。

提前致谢!

编辑:

在 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 :(
}

最佳答案

您需要以某种方式从 Options 表单中获取对 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

关于c# - 如何使用 C# 访问另一个 Windows 窗体中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4373341/

相关文章:

C# 主动检测Lock键

C# 控制台线程

c# - 如何在 C# 中更改 SSRS 报告的高度?

c# - 如何使统一对象的颜色100%不透明

c# - 使用 Selenium Webdriver 时,使用 InternetExplorerDriver - "Unexpected error launching Internet Explorer...."时出现以下错误

c# - MVC WebAPI 返回多个图像

c# - Azure 服务总线队列 - 如何防止 IHostedService 立即处理队列消息

c# - 从嵌套母版页访问用户控件

c# - Java Tcp Server 和 .Net Tcp Client 发送和接收问题

c# - 在特定设置上使用正则表达式