2015-10-19 27 views
-1

我几乎完成了使用WinForms与VS2012进行Connect4游戏的工作。一切正常,但我想在专用的开始菜单窗口中为用户提供选项。在那个菜单上,我有两个组合框,我需要将文本从我的其他窗体(游戏窗口)中用作两个变量的值。如果可能的话,我还有一个新游戏按钮应该从我的其他窗体调用一个方法(基本上,我在游戏窗体中创建了一个“初始化()”方法,并且希望在点击“新建游戏“按钮在其他表格上)。想要从一个表单中获取数据以将其用作另一个表单中的变量

我只找到了一些教程,展示了如何从一种形式到另一种形式(如标签文本)做非常基本的事情,但我没有找到我的具体问题的答案。

我用这个在我的主要形式,以实例化菜单形式

public FormMenu myMenu; 
myMenu = new FormMenu(); 

我想要做的是,我可以做的另一种形式是这样的:

amountOfRows = Int32.Parse(myMenu.comboBoxRows.Text); 
amountOfColumns = Int32.Parse(myMenu.comboBoxColumns.Text); 

任何想法我怎么能做到这一点?

+1

嗨,@Morgoth。首先,欢迎来到StackOverflow ...注意,通常问题应该总是附加一些代码。现在不可能提出一个好的方法,因为我们不知道你的代码是什么样的。有很多解决方案,最简单的方法是在两个表单都可以访问的类中使用静态变量。 – SpaceSteak

+0

thx为您的答案。我在原始文章中添加了一些代码,以更具体地说明我想要做什么。 – Morgoth

+0

只要在范围内,您可以访问FormMenu的公共成员。这比在父类中使用静态变量稍微复杂一点,但它稍微好一点。 formMenuInstance.someMember会给你的会员 – SpaceSteak

回答

0

我很想看到一些示例代码,所以我可以帮助看看你的困惑在哪里。 WinForms要求其他表单被实例化。

OtherForm form = new OtherForm(); 

一旦表单被实例化,您应该能够从中运行代码。

编辑:

根据您的实现,我建议做返回这些诠释值范围内FormMenu公共方法。

public int ReturnRows() 
{ 
    return Int32.Parse(myMenu.comboBoxRows.Text); 
} 

public int ReturnColumns() 
{ 
    return Int32.Parse(myMenu.comboBoxColumns.Text); 
} 

然后从其中MYMENU被实例化,你可以调用myMenu.ReturnRows()和myMenu.ReturnColumns()

+0

对不起,无法立即添加代码。事实上,因为我不知道该怎么做,所以我没有很多与这个特定问题相关的代码。我已经在我的游戏窗体(我的主窗体)中实例化了菜单窗体,但从那里我不知道如何做我想做的事(我在第一篇文章中解释过)。我用我用来实例化的短代码编辑了我的第一篇文章。 – Morgoth

+0

谢谢,你的编辑部分的方法就像一个魅力! – Morgoth

0

最简单的方法是给你的窗体的引用存储在menue其他形式作为一个变量。 (你已经将它命名为myMenu

然后,你应该在表单中为值添加一个setter来创建你需要的属性/属性。 (见例如here

最后你

myMenu.property = newvalue; 

That`s更新表单字段所有关于它

相关问题