将数据从一个窗口传递到另一个窗口
本文关键字:窗口 另一个 一个 数据 | 更新日期: 2023-09-27 18:01:18
我有两个窗口。当我按下一个按钮时,我想把一个Person
对象从当前的Window
传递给另一个。
这是主窗口中的代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
person owner = new person();
owner.ID = 1;
owner.Name = "Mark";
w2 newWindow = new w2(owner);
newWindow.Show();
}
在另一个名为w2
的窗口中,我有以下代码:
public partial class w2 : Window
{
public class person
{
int _ID;
string _Name;
public int ID
{
get { return _ID; }
set { _ID = value; }
}
public string Name
{
get { return _Name; }
set { _Name = value; }
}
}
public w2()
{
InitializeComponent();
}
public w2(person passedPerson) : this()
{
this.passedPerson = passedPerson;
}
}
当我尝试编译时,我得到这些错误:
错误3 '正在传递。w2'不包含' passsedperson '的定义,也没有扩展方法' passsedperson '接受类型为'passing '的第一个参数。可以找到W2 '(您是否缺少using指令或程序集引用?)48 18 pass
错误1最佳重载方法匹配'passing.w2.w2(passing.w2.person)'有一些无效参数57 28 passing
错误2参数1:不能从'passing.MainWindow '转换。人'到'传递。人' 57 35路过
顺便说一句。我用这个例子作为起点:
http://go4answers.webhost4life.com/example/pass变量- windowopen wpf 31068. - aspx
首先,简单的:
的传递。w2'不包含' passsedperson '的定义
当你说:
this.passedPerson = passedPerson;
很明显,你试图为这个人分配一个实例字段,但是没有这样的字段。只需添加一个:
private person passedPerson;
对于其他两个错误,这是由于您定义了两个person
类,每个窗口一个。你不应该这么做。仅仅因为有两个类具有相同的名称和相同的字段,并不能使它们成为相同的类,也不意味着您可以将其中一个类视为另一个类。
在顶层创建person
类(理想情况下是在它自己的文件中),并确保两个窗口都使用同一个定义。
还要注意,按照惯例,类名以大写字母开头:
尝试显式地分配传递的人的每个属性。我的意思是试着做
public w2(MainForm.person passedPerson)
: this()
{
this.passedPerson.ID = passedPerson.ID;
this.passedPerson.Name = passedPerson.Name;
}
您可能已经为Person定义了2个类。
尽管您应该只定义一次person。(创建一个单独的类,并使用它的两个窗体)
try this,第一个窗口LoginPageWindow
public partial class LoginPageWindow : Window
{
private void btnSave_Click(object sender, RoutedEventArgs e)
{
new Suucessfullogin(textboxvalue.text).ShowDialog();
}
}
在第二个窗口,我们可以得到value
public partial class Suucessfullogin : Window
{
string str;
public Suucessfullogin(string value)
{
InitializeComponent();
str= value;
}
}
仅仅在类中嵌套一个类并不会创建它的成员。试着
public partial class w2 : Window
{
private person passedPerson;
....
}
然后用引用填充您的成员。
或者更好:把你的类person放在其他类之外,这样它们都可以访问它的定义
你确定你的"owner"变量是在w2类(w2.person)中定义的person类型吗?你的这个呢?passsedperson字段定义了吗?看起来它根本就没有定义。如果你想在"父"类之外使用它,就不应该创建内部类。