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);
}
}
}
那么,你能帮帮我吗?
好吧,您可以看到行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。