一尘不染

在Windows窗体c#之间传递值[重复]

c#

我正在努力研究如何在表单之间传递值。我有四种形式,我想将检索到的信息传递Login给第四种也是最后一种形式。

这是我到目前为止所拥有的。

在此功能中:

private void btnLogin_Click(object sender, EventArgs e)

我已经反序列化了我想要的数据,像这样:

NewDataSet resultingMessage = (NewDataSet)serializer.Deserialize(rdr);

然后,当我调用下一个表格时,我已经这样做了:

Form myFrm = new frmVoiceOver(resultingMessage);
myFrm.Show();

然后,我的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事件中我似乎无法访问它。如何访问它,以便将其传递给下一个表单?


阅读 340

收藏
2020-05-19

共1个答案

一尘不染

您需要loginDatafrmVoiceOver类内部放入一个局部变量,以便能够从其他方法访问它。当前它的作用域是构造函数:

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#变量范围 ”之类的东西可以使您在这一领域得到更多的了解,因为您将一直遇到这个概念。我很感谢你是自学成才的,所以我只是想强调一下:-)

2020-05-19