C#WPF我无法在该类的Mainwindo.xaml.cs中获取文本框的值

本文关键字:cs 获取 取文本 xaml Mainwindo C#WPF | 更新日期: 2023-09-27 18:23:52

简单地说,我试图在textbox中获取值,以便在其他类中使用它,但它在其他班是空的。

你能帮我吗?

这个简单的代码的主要形式是:

    namespace WpfApplication4
    {
        /// <summary>
        /// Interaction logic for MainWindow.xaml
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
            public string  GetTxt
            {
                get { return textBox.Text; }
                //set { };
            }
            private void button_Click(object sender, RoutedEventArgs e)
            {
                Class1 cls = new Class1();
                cls.txt();
            }
        }
    }
     and this code in class:
    namespace WpfApplication4
    {
        public class Class1
        {
            MainWindow mw = new MainWindow();
            public void txt()
            {
                System.Windows.MessageBox.Show(mw.GetTxt);
            }
        }
    }

那么,你能帮帮我吗?

C#WPF我无法在该类的Mainwindo.xaml.cs中获取文本框的值

好吧,您可以看到行MainWindow mw = new MainWindow();。这将创建一个新的MainWindow对象,其textBox.Text的默认值显然是"
为了解决这个问题,可以让Class1的构造函数接受一个字符串。它还需要一个字符串字段,以便txt方法可以使用它。因此,将此构造函数添加到您的Class1:中

public Class1(string text){
    _text = text;
}

在类中添加此行以添加字段:private string _text;。现在更改您的txt方法如下:

public void txt()
{
    System.Windows.MessageBox.Show(_text);
}

现在一切都准备好了。在MainWindow类的button_Click中,更改类声明如下:

Class1 cls = new Class1(textBox.Text);

或者很简单,正如William建议的那样,您可以让txt类也有一个字符串参数。但是,如果要在多个方法中使用文本框值,则需要将其存储在一个字段中。否则,你可以让你的方法接受它作为一个参数。

当在MainWindow中单击按钮时,它会创建Class1的新实例,从而创建一个new MainWindow。在这个新的MainWindow实例中,文本框。文本为空。您需要对现有实例(单击按钮的实例)调用GetText。