从主窗体以另一种形式获取字符串的正确方法是什么?C#
本文关键字:方法 是什么 字符串 获取 窗体 另一种 | 更新日期: 2023-09-27 18:01:53
我在将字符串从主窗体传递到另一个名为unlockForm的窗体时遇到问题。
在我的mainForm中,我创建了每个字符串,就像一样
public string race
{
get;set;
}
我一直试图从unlockForm访问它们,但创建了一个新的mainForm,比如这个
mainForm mainScreen = new mainForm();
unlockRace = mainform.race;
给了我第一行的StackOverflowException未处理错误。
我在主表单中制作新表单时没有遇到这个问题,所以我想知道正确的方法是什么
编辑:
以下是@deathismyfriend 要求的完整代码
这是主窗体构造函数
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";
}
}
这是我解锁表单中的代码
public unlockForm()
{
InitializeComponent();
getStats();
}
mainForm mainScreen = new mainForm();
private void getStats()
{
race = mainScreen.race;
}
编辑#2:
即使当我使我的代码解锁形成以下
public unlockForm()
{
InitializeComponent();
//getStats();
}
mainForm mainScreen = new mainForm();
我仍然收到错误
有两种方法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();
}