在两个项目之间传递价值

时间:2011-10-18 17:14:16

标签: c# visual-studio mdi

我有两个项目,在两个项目之间传递价值时遇到麻烦。像往常一样,我已经通过了项目之间的文件引用。

我的项目详情是:

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

我想在显示project1表单时阅读MDI Forms的数据 示例如下:

//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; }

    }

在Project1的Form24上未显示从MDI传递到Project1的值。没有错误。 Form24显示没有从MDI表单传递的值。

为什么值没有显示在project1的form24上?什么是解决方案?。

2 个答案:

答案 0 :(得分:3)

您可能忘记在Project2中向Project1添加项目引用。在Solution Explorer中,右键单击Project2并选择“Add Reference”,然后在“Projects”下选择Project1。

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

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

在Project2源文件的顶部。


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


作为旁注,不要将标签公开为属性,只需公开其Text属性:

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

答案 1 :(得分:0)

我遇到了同样的问题......答案很简单:这是不可能的。但是,您可以破解这种情况......使用数据库或共享解决方案,您将在其中建立2个项目之间的通信。或者使用3个项目并创建通信驱动程序,它将用于1和2项目。它确实可以衡量你将如何做到这一点。

  1. 情况:数据库

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

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

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

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

    项目A - >提述─>添加参考 - >共享项目。

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

    那个通信协议就像你需要创建的驱动程序。

    通过FILE轻松完成此操作。创建项目A写入和项目B读取的隐藏文件。存储在您的文件json字符串或json数组中然后读取所有行并反序列化所有内容,例如使用Newtonsoft.Json NuGet包。

    我希望这会有所帮助。