【发布时间】:2016-12-07 02:53:33
【问题描述】:
我有两节课。第一类是 form1,它有一个组合框和三个选项。我一直在尝试找到一种方法来从我的其他班级获取当前组合框 selectedindex,但我所有的尝试都失败了。这是我上次尝试的一些代码。
public partial class Form1 : Form
{
form2 herochoose = new form2();
public void comboBox1_SelectedIndexChanged_2(object sender, EventArgs e)
{
heroischosen();
}
public int heroischosen()
{
if (comboBox1.SelectedIndex == 0)
{
herochoose.HeroChoosen = 0;
}
else if (comboBox1.SelectedIndex == 1)
{
herochoose.HeroChoosen = 1;
}
else if (comboBox1.SelectedIndex == 2)
{
herochoose.HeroChoosen = 2;
}
return herochoose.HeroChoosen;
}
}
从表格 2 开始
public partial class form2 : Form
{
private int _heroChoice;
public int HeroChoosen
{
get { return _heroChoice; }
set { _heroChoice = value; }
}
protected override void OnPaint(PaintEventArgs e)
{
if (_heroChoice == 0)
{
Console.WriteLine("herochoice1");
}
else if (_heroChoice == 1)
{
Console.WriteLine("herochoice2");
}
else if (_heroChoice == 2)
{
Console.WriteLine("herochoice3");
}
}
}
当 form1 处于活动状态时,它表明在组合框中正确选择了每个选项,但是当我启动 form2 时,它永远不会保留组合框选项。如果我遗漏了一些非常简单的东西,我很抱歉。
谢谢。
【问题讨论】:
-
如何启动form2,我在给定的代码中找不到任何
herochoose.Show() -
您是否尝试过调试并在 Form1 中的方法 'heroischosen' 中放置断点?
-
正如@un-lucky 所说。为此,您需要从 form1 启动表单 2。如果这不可能,您将需要其他方式在表单之间传递数据。 Singleton 模式在游戏编程中非常流行,用于维护整个游戏中使用的状态变量集合。