我在两个表单之间传递字符串值时遇到问题。
首先我创建了公共字符串sanacode
,我在其中分配了form 2
表单1代码
AnalysisEdit ae = new AnalysisEdit();
int Row = dataGridView1.CurrentRow.Index;
ae.sanacode = dataGridView1[0, Row].Value.ToString();
ae.Show();
表单2构造函数代码
public AnalysisEdit()
{
InitializeComponent();
MessageBox.Show(sanacode,);
}
它没有给我看任何东西
答案 0 :(得分:2)
从
更改构造函数public AnalysisEdit()
{
InitializeComponent();
MessageBox.Show(sanacode);
}
到
public AnalysisEdit(string sanacode)
{
InitializeComponent();
MessageBox.Show(sanacode);
}
表单调用
int Row = dataGridView1.CurrentRow.Index;
AnalysisEdit ae = new AnalysisEdit(dataGridView1[0, Row].Value.ToString());
ae.Show();
答案 1 :(得分:1)
问题是你没有按正确的顺序打电话。表单2的构造函数代码将在表单代码的第1行调用,或者AnalysisEdit ae = new AnalysisEdit();
但是,这是在第3行上发生的赋值之前:ae.sanacode = dataGridView1[0, Row].Value.ToString();
因此当您在表单中显示消息框时2构造函数sanacode
尚未分配给。
有两种方法可以解决这个问题。首先,您可以根据@kostas ch。的答案通过构造函数传递值,或者您可以在表单2中覆盖表单的OnShown
事件:
protected override void OnShown(EventArgs e)
{
MessageBox.Show(sanacode);
}
答案 2 :(得分:0)
我不会把你的代码
MessageBox.Show(sanacode,);
在构造函数中。我会使用“加载” - 事件。 如果使用“加载” - 当您使用
时,您的MessageBox将显示ae.Show();
喜欢这个
private void AnalysisEdit_Load(object sender, EventArgs e)
{
MessageBox.Show(sanacode);
}
答案 3 :(得分:0)
也许您想要了解各种表单之间传递数据的方法。我写了两篇关于这个主题的博客文章:
http://geek-goddess-bonnie.blogspot.com/2011/01/passing-data-between-forms.html
http://geek-goddess-bonnie.blogspot.com/2012/12/passing-data-between-forms-redux_31.html
答案 4 :(得分:-1)
您可以暂时将MessageBox.Show()
添加到您的二传手:
// In Form2
public sanacode
{
set
{
_sanacode = value;
MessageBox.Show(_sanacode);
}
get
{
return _sanacode;
}
}