从textbox1获取文本并以其他形式在textblock1上设置它

时间:2012-12-02 08:31:30

标签: c# windows-8 windows-runtime

我想从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;

任何帮助? 谢谢:D

2 个答案:

答案 0 :(得分:3)

试 form1中

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

窗口2

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.";
    }
}

link可能有帮助

答案 1 :(得分: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);                    
    }
}