0

form1のtextbox1から入力を取得し、form2のtextblock1に設定したいのですが、テキストが表示されません

form1コード:

    private void Button_Click_3(object sender, RoutedEventArgs e)
    {
        var file = await ApplicationData.Current.LocalFolder.GetFileAsync(textbox1.Text + ".txt");
        var line = await FileIO.ReadLinesAsync(file);
        if (textbox1.Text == line[0] && tb2.Password == line[1])
           {
               textbox1.Text = line[0];
               Frame.Navigate(typeof(form2));                    
           }
    }

    public string MyValue
    {
        get { return textbox1.Text; }
    }

form2のコード

    var logged = new MainPage();
    textblock1.Text = logged.MyValue;

何か助けはありますか?ありがとう

4

2 に答える 2

3

form1を試してください

 Frame.Navigate(typeof(form2), textbox1.Text);   

form2

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    string name = e.Parameter as string;

    if (!string.IsNullOrWhiteSpace(name))
    {
          textblock1.Text = name ;
    }
    else
    {
        textblock1.Text = "Name is required.  Go back and enter a name.";
    }
}

このリンクは多分役立ちます

于 2012-12-02T09:55:01.753 に答える
1

form2新しいインスタンスを作成しているため、目的の値が得られません。MainPageもちろん、そのインスタンスは、ナビゲートしたばかりのインスタンスからの値を保持していません。

値をパラメータとしてに渡す必要がありますform2。その目的のためにNavigate、追加のパラメーターをとる別のオーバーロードを使用できます。

private void Button_Click_3(object sender, RoutedEventArgs e)
{
    var file = await ApplicationData.Current.LocalFolder.GetFileAsync(textbox1.Text + ".txt");
    var line = await FileIO.ReadLinesAsync(file);
    if (textbox1.Text == line[0] && tb2.Password == line[1])
    {
        textbox1.Text = line[0];
        Frame.Navigate(typeof(form2), textbox1.Text);                    
    }
}
于 2012-12-02T09:36:56.727 に答える