我遇到的问题是将字符串从我的主窗体传递到另一个名为unlockForm的窗体。
在我的mainForm中,我创建了每个字符串,如此
public string race
{
get;set;
}
我一直试图从unlockForm访问它们,但是像这样创建一个新的mainForm
mainForm mainScreen = new mainForm();
unlockRace = mainform.race;
给我一个StackOverflowException,第一行是未处理的错误。
我在主表单中创建新表单时没有遇到此问题,所以我想知道正确的方法是什么。
编辑:
以下是@deathismyfriend
所要求的完整代码这是mainForm构造函数
public mainForm()
{
InitializeComponent();
}
这是mainForm中用于更新种族字符串的代码。
public string race
{
get;set;
}
private void raceUpdate(object sender, EventArgs e)
{
if (raceBox.Text == "Human")
{
if (infoText != humanText)
{
infoText = humanText;
infoboxUpdate(sender, e);
}
}
else if (raceBox.Text == "Troll")
{
if (infoText != trollText)
{
infoText = trollText;
infoboxUpdate(sender, e);
}
}
race = raceBox.Text;
if (race == "")
{
race = "Unspecified";
}
}
这是我的unlockForm中的代码
public unlockForm()
{
InitializeComponent();
getStats();
}
mainForm mainScreen = new mainForm();
private void getStats()
{
race = mainScreen.race;
}
编辑#2:
即使我为unlockForm创建了以下代码
public unlockForm()
{
InitializeComponent();
//getStats();
}
mainForm mainScreen = new mainForm();
我仍然收到错误
答案 0 :(得分:2)
有两种方法 1:
在UnlockForm.cs
private string _race;
public UnlockForm(string race)
{
_race = race;
}
在MainForm.cs
private void LuanchUnlockForm()
{
var unlockForm = new UnlockForm("Human");
unlockForm.ShowDialog();
}
第二种方式:
在UnlockForm.cs
private MainForm _mainForm;
public UnlockForm(MainForm mainForm)
{
_mainForm= mainForm;
}
private void GetRace()
{
var myRace = _mainForm.race;
}
在MainForm.cs
private void LuanchUnlockForm()
{
var unlockForm = new UnlockForm(this);
unlockForm.ShowDialog();
}
如果要发送多个字符串,请执行以下操作
像
一样创建新类 Human.cs
public class Human
{
public string Name { get; set; }
public int Age { get; set; }
public string Address { get; set; }
// or anything you want
}
现在
在UnlockForm.cs
private Human _human;
public UnlockForm(Human human)
{
_human= human;
}
private void GetHumanAttributes()
{
var age = _human.Age;
//and others ...
}
在MainForm.cs
private void LuanchUnlockForm()
{
var human = new Human();
human.Name = "name";
human.Age = 19;
// others
var unlockForm = new UnlockForm(human);
unlockForm.ShowDialog();
}