从文本框中读取并传递到另一页

时间:2013-04-05 20:40:30

标签: c# visual-studio-2010 windows-phone-7 textbox

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

2 个答案:

答案 0 :(得分:1)

有很多问题。您说_beseda()上有Page1个功能,但您在Page2()中引用了button1_click()。另外,如果我假设您在Page1中表示button1_click(),则表示您正在创建新的Page1,然后您要求它提供文本框的文字....所以当然它是空的。你还没有放任何东西。

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

答案 1 :(得分:1)

在Windows手机中的页面之间传递数据有两种策略。

  1. 使用App.cs
  2. 在导航期间将数据作为参数值传递
  3. <强> 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。导航时将值作为参数传递

    在将文本框值嵌入到Page 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);
         }
    

    以下是一些有用的链接..