7

フォーム間で値を渡す方法を見つけるのに苦労しています。Login4 つのフォームがあり、 によって取得された情報を 4 番目の最終フォームに渡したいと考えています。

これは私がこれまでに持っているものです。

この関数では:

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();
}

デバッグすると、データが 2 番目の形式になっていることがわかりますが、イベントloginDataでアクセスできないようです。btnVoiceOverNo_Click次のフォームに渡すにはどうすればアクセスできますか?

4

2 に答える 2

11

他のメソッドからアクセスできるようにするには、クラスloginData内のローカル変数に入れる必要があります。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();
    }
}

また、2 つのフォームが同じプロセスにある場合は、データをシリアル化する必要はなく、フォームのコンストラクターへの標準参照として単純に渡すことができます。

「 C# 変数スコープ」のようなものを Google で検索して、この領域の詳細を理解してください。常にこの概念に遭遇することになります。私はあなたが独学であることを感謝しているので、私はそれを強化しようとしています:-)

于 2013-07-24T14:10:51.463 に答える