[英]Update variable in Form1 from value in Form2
我有2個表單,名字為HomeForm,名字為cfgForm
我有變量,在HomeForm中名為strCNF,在cfgForm中來自變量CNF的值為strCNF。
這里是HomeForm的代碼:
private void cnfRulesMenu_Click(object sender, EventArgs e)
{
try
{
cfgForm cfgForm = new cfgForm(this);
cfgForm.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Error");
}
}
// other parts....
public cfgForm cfg;
string strCNF = "";
strCNF = ((cfgForm)this.cfg).CNF;
然后,以cfgForm的另一種形式顯示代碼:
public string CNF = "S -> NP VP" + System.Environment.NewLine +
"NP -> DT NN | QT NN | NP PP | NP RC | n | p" + System.Environment.NewLine +
"DT -> d" + System.Environment.NewLine +
"NN -> JJ NN | n" + System.Environment.NewLine +
"JJ -> JJ JJ | j" + System.Environment.NewLine +
"QT -> q" + System.Environment.NewLine +
"PP -> PT NP | GG PP" + System.Environment.NewLine +
"PT -> i" + System.Environment.NewLine +
"GG -> g" + System.Environment.NewLine +
"RC -> WH NP | WH VP" + System.Environment.NewLine +
"WH -> w" + System.Environment.NewLine;
public cfgForm(HomeForm homeForm)
{
// TODO: Complete member initialization
InitializeComponent();
this.homeForm = homeForm;
}
private void btnDefaultCFG_Click(object sender, EventArgs e)
{
tbCNF.Text = CNF;
}
private void cfgForm_Load(object sender, EventArgs e)
{
tbCNF.Text = CNF;
btnApplyCNF.Enabled = false;
}
private void btnApplyCNF_Click(object sender, EventArgs e)
{
//CNF = "";
CNF = tbCNF.Text;
HomeForm homeForm = new HomeForm();
homeForm.cfg = this;
//homeForm.ShowDialog();
this.Hide();// doesn't work
}
到目前為止,如果我使用homeForm.ShowDialog(),這些代碼運行良好。 我的意思是,在cnfRulesMenu_Click處於活動狀態並顯示cfgForm支持HomeForm之后,然后在cfgForm中更新CNF變量,然后返回到HomeForm和cfgForm.Hide。 但是它給出空值。
先生有什么建議。
因為您在這些代碼中新建了另一個HomeForm
。
private void btnApplyCNF_Click(object sender, EventArgs e)
{
//CNF = "";
CNF = tbCNF.Text;
HomeForm homeForm = new HomeForm();
homeForm.cfg = this;
//homeForm.ShowDialog();
this.Hide();// doesn't work
}
因此,這些代碼沒有按您的意願工作。
public cfgForm cfg;
string strCNF = "";
strCNF = ((cfgForm)this.cfg).CNF;
修改您的代碼可以解決您的問題,但是我必須說這些架構沒有意義。
private void btnApplyCNF_Click(object sender, EventArgs e)
{
//CNF = "";
CNF = tbCNF.Text;
this.homeForm.cfg = this;
//homeForm.ShowDialog();
this.Hide();// doesn't work
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.