C# 在两个窗体之间传递字符串
我在两个表单之间传递字符串值时遇到问题 首先,我创建了一个公共字符串C# 在两个窗体之间传递字符串,c#,winforms,C#,Winforms,我在两个表单之间传递字符串值时遇到问题 首先,我创建了一个公共字符串sanacode,我将传递给表单2中的值赋值 表格1代码 AnalysisEdit ae = new AnalysisEdit(); int Row = dataGridView1.CurrentRow.Index; ae.sanacode = dataGridView1[0, Row].Value.ToString(); ae.Show(); public AnalysisEdit() { InitializeCom
sanacode
,我将传递给表单2中的值赋值
表格1代码
AnalysisEdit ae = new AnalysisEdit();
int Row = dataGridView1.CurrentRow.Index;
ae.sanacode = dataGridView1[0, Row].Value.ToString();
ae.Show();
public AnalysisEdit()
{
InitializeComponent();
MessageBox.Show(sanacode,);
}
表格2构造代码
AnalysisEdit ae = new AnalysisEdit();
int Row = dataGridView1.CurrentRow.Index;
ae.sanacode = dataGridView1[0, Row].Value.ToString();
ae.Show();
public AnalysisEdit()
{
InitializeComponent();
MessageBox.Show(sanacode,);
}
它不会给我任何改变
public AnalysisEdit()
{
InitializeComponent();
MessageBox.Show(sanacode);
}
到
通知单
int Row = dataGridView1.CurrentRow.Index;
AnalysisEdit ae = new AnalysisEdit(dataGridView1[0, Row].Value.ToString());
ae.Show();
我不会把你的密码
MessageBox.Show(sanacode,);
在构造函数中。我会使用“加载”事件。
如果您使用“加载”-事件,当您使用
ae.Show();
像这样
private void AnalysisEdit_Load(object sender, EventArgs e)
{
MessageBox.Show(sanacode);
}
问题是你没有按正确的顺序调用东西。表单2构造函数代码将在表单代码的第1行调用,或AnalysisEdit ae=new AnalysisEdit()代码>但是,这是在第3行上发生的赋值之前:ae.sanacode=dataGridView1[0,第行].Value.ToString()代码>因此,当您在form 2构造函数中显示messagebox时,sanacode
尚未分配给
有两种方法可以解决这个问题。首先,您可以根据@kostas ch.的回答通过构造函数传入值,或者您可以覆盖表单2中的OnShown
事件:
protected override void OnShown(EventArgs e)
{
MessageBox.Show(sanacode);
}
您可以临时将MessageBox.Show()
添加到setter:
// In Form2
public sanacode
{
set
{
_sanacode = value;
MessageBox.Show(_sanacode);
}
get
{
return _sanacode;
}
}
也许您想了解在表单之间传递数据的各种方法。我就这个问题写了两篇博文:
您的代码未编译。能否确保ae.sanacode=dataGridView1[0,第行].Value.ToString()代码>是否正在回调任何值?还要发布更多的AnalysisEdit
表单的代码,否则您将导致每个人都发布一个属性或变量。您可能已经这样做了。它告诉我必须有一个带空参数的构造函数使用messagebox的想法是确保字符串传递正确我想要的是从datagrid中传递字符串,格式为1,用于格式为2,即使我也认为其他解决方案更好,我的代码与您刚才描述的完全相同。它将接受一个字符串,您将该字符串应用于Form1中的sanacode,并在加载Form2后显示该字符串