从WPF应用程序中的文本框获取用户输入

我正在尝试从我正在构建的WPF应用程序中的文本框中获取用户输入。 用户将输入一个数值,我想将其存储在一个变量中。 我刚刚开始使用C#。 我该怎么做?

目前我打开文本框并让用户输入值。 之后,用户必须按下一个按钮,文本框中的文本存储在该按钮中。

private void TextBox_TextChanged(object sender, TextChangedEventArgs e) { } private void Button_Click(object sender, RoutedEventArgs e) { var h = text1.Text; } 

我知道这不对。 什么是正确的方法?

就像@Michael McMullin已经说过的那样,你需要在函数之外定义变量,如下所示:

 string str; private void Button_Click(object sender, RoutedEventArgs e) { str = text1.Text; } // somewhere ... DoSomething(str); 

关键是:变量的可见性取决于其范围。 请看一下这个解释 。

好吧,这是一个如何使用MVVM执行此操作的简单示例。

首先编写一个视图模型:

 public class SimpleViewModel : INotifyPropertyChanged { private int myValue = 0; public int MyValue { get { return this.myValue; } set { this.myValue = value; } } public event PropertyChangedEventHandler PropertyChanged; } 

然后编写转换器,这样就可以将字符串转换为int,反之亦然:

 [ValueConversion( typeof(int), typeof(string))] class SimpleConverter:IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return value.ToString(); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { int returnedValue; if (int.TryParse((string)value, out returnedValue)) { return returnedValue; } throw new Exception("The text is not a number"); } } 

然后像这样编写你的XAML代码:

            

您也可以给控件命名:

  

并在代码中:

  private void Button_Click(object sender, RoutedEventArgs e) { string content = Content.Text; } 
 // WPF // Data int number; // Button click event private void Button_Click(object sender, RoutedEventArgs e) { // Try to parse number bool isNumber = int.TryParse(text1.Text, out number); }