在两个项目之间传递值

本文关键字:之间 项目 两个 | 更新日期: 2023-09-27 18:11:40

我有两个项目,在两个项目之间传递值有麻烦。像往常一样,我在项目之间传递了文件引用。

My project Details Is:

Project1                Project2
All forms and object    Only 1 MDI Forms Containing ManuStrip

我想读MDI表格上显示的项目表格的数据示例如下:

//This is on Project2 MDI Forms
    private void accountMasterToolStripMenuItem_Click(object sender, EventArgs e)
    {
        INVOICE1.Form24 f24 = new INVOICE1.Form24();
        f24.PFrom.Text = label4.Text;
        f24.PTo.Text = label5.Text;
        f24.Namee.Text = textBox1.Text;
        f24.ID.Text = label6.Text;
        f24.ShowDialog();

    }

我已经在project1表单上创建了相同的属性

   public Label PFrom
    {
        get { return label14; }
        set { label14 = value; }
    }
    public Label PTo
    {
        get { return label16; }
        set { label16 = value; }
    }
    public Label Namee
    {
        get { return label2; }
        set { label2 = value; }
    }
    public Label ID
    {
        get { return label3; }
        set { label3 = value; }
    }

从MDI传递给Project1的值没有显示在Project1的Form24上。没有错误。Form24显示没有值,这些值是从MDI表单传递过来的。

为什么project1的form24上没有显示值?

在两个项目之间传递值

您可能忘记在Project2中向Project1添加一个项目引用。在解决方案资源管理器中,右键单击Project2并选择"添加引用",然后在"项目"下选择Project1。

另外,如果两个项目具有不同的名称空间,则需要将

using Project1;  // replace "Project1" with the namespace of your Project1

在Project2源文件的顶部。


如果没有编译错误,那么问题不太可能与项目引用有关。也许在Form24构造函数或Load事件中有一些代码正在清除这些标签


作为一个旁注,而不是公开标签作为属性,只是公开他们的文本属性:

public string PFrom       
{           
    get { return label14.Text; }           
    set { label14.Text = value; }          
}   

我也遇到过同样的问题,答案很简单:不可能。然而,你可以解决这个问题……使用数据库或共享解决方案,您将在两个项目之间建立通信。或者使用3个项目并创建将在1和2个项目中使用的通信驱动程序。它不会衡量你将如何做到这一点。

  1. 情况:数据库

  2. 情况:使用通信协议共享解决方案

  3. 也许创建DLL也会有帮助

我个人的解决方案是这样的:(在真实的网站和单独的背景项目上测试)

创建共享项目,使用VS模板(共享项目)。然后创建您的类,并在每个项目的项目参考部分中包含您的共享项目。例如项目A项目B项目SharedPr ->包含通信协议

Project A -> references-> Add Reference -> Shared Project.

项目B ->参考->添加参考->共享项目。

这个通信协议有点像你需要创建的驱动程序。

通过FILE很容易做到这一点。创建隐藏文件,项目A写入,项目B读取。在文件中存储json字符串或json数组,然后读取所有行并反序列化所有内容,例如使用Newtonsoft。Json NuGet包。