0

我想从 TextBox 中读取文本,然后将其发送到另一个页面。但在另一页上,我不断收到空字符串。为什么这不起作用?

我在第 1 页上有这个:

public string _beseda()
{
    return textBox1.Text;          
}

在第 2 页上,我应该检索此字符串:

private void button1_Click(object sender, RoutedEventArgs e)
{
    Page2 neki = new Page2();
    MessageBox.Show(neki._beseda());
}
4

2 回答 2

1

有很多问题。你说你有那个_beseda()功能Page1,但你Page2()button1_click(). 此外,如果我假设您的意思是Page1in button1_click(),那么您正在创建新的Page1,然后您向它询问文本框的文本......所以它当然是空的。你没有在里面放任何东西。

即使你打算放在Page2那里,问题仍然是一样的。

于 2013-04-05T20:44:25.920 回答
1

在 windows phone 的页面之间传递数据有两种策略。

  1. 使用 App.cs
  2. 在导航期间将数据作为参数值传递

1.使用App.cs

打开 App.xaml 后面的 App.cs 代码写:

 // To store Textbox the value   
 public string storeValue;

在第 1 页

 protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedFrom(e);
        App app = Application.Current  as App;
        app.storeValue = textBox1.Text;            
    }

在第 2 页

 private void button1_Click(object sender, RoutedEventArgs e) {

    App app = Application.Current  as App;
    MessageBox.Show(app.storeValue);
}

2. 导航时将值作为参数传递

在将嵌入文本框值导航到页面 URL 之前

    string newUrl = "/Page2.xaml?text="+textBox1.Text;
    NavigationService.Navigate(new Uri(newUrl, UriKind.Relative));

在第 2 页

    //Temporarily hold the value got from the navigation 
    string textBoxValue = "";
    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        //Retrieve the value passed during page navigation
         NavigationContext.QueryString.TryGetValue("text", out textBoxValue)               
    }


     private void button1_Click(object sender, RoutedEventArgs e) {

       MessageBox.Show(textBoxValue);
     }

这里有一些有用的链接..

于 2013-04-05T22:00:20.303 回答