将数据从一个窗口传递到另一个窗口

本文关键字:窗口 另一个 一个 数据 | 更新日期: 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字段定义了吗?看起来它根本就没有定义。如果你想在"父"类之外使用它,就不应该创建内部类。