我正在努力研究如何在表单之间传递值。我有四种形式,我想将检索到的信息传递Login给第四种也是最后一种形式。
Login
这是我到目前为止所拥有的。
在此功能中:
private void btnLogin_Click(object sender, EventArgs e)
我已经反序列化了我想要的数据,像这样:
NewDataSet resultingMessage = (NewDataSet)serializer.Deserialize(rdr);
然后,当我调用下一个表格时,我已经这样做了:
Form myFrm = new frmVoiceOver(resultingMessage); myFrm.Show();
然后,我的VoiceOver表单如下所示:
VoiceOver
public frmVoiceOver(NewDataSet loginData) { InitializeComponent(); } private void btnVoiceOverNo_Click(object sender, EventArgs e) { this.Close(); Form myFrm = new frmClipInformation(); myFrm.Show(); }
调试时,我可以看到数据是loginData第二种格式,但是在btnVoiceOverNo_Click事件中我似乎无法访问它。如何访问它,以便将其传递给下一个表单?
loginData
btnVoiceOverNo_Click
您需要loginData在frmVoiceOver类内部放入一个局部变量,以便能够从其他方法访问它。当前它的作用域是构造函数:
frmVoiceOver
class frmVoiceOver : Form { private NewDataSet _loginData; public frmVoiceOver(NewDataSet loginData) { _loginData = loginData; InitializeComponent(); } private void btnVoiceOverNo_Click(object sender, EventArgs e) { // Use _loginData here. this.Close(); Form myFrm = new frmClipInformation(); myFrm.Show(); } }
另外,如果两种形式都在同一过程中,则可能不需要序列化数据,只需将其作为标准引用传递给形式的构造函数即可。
Google之类的“ C#变量范围 ”之类的东西可以使您在这一领域得到更多的了解,因为您将一直遇到这个概念。我很感谢你是自学成才的,所以我只是想强调一下:-)