我有两个项目,在两个项目之间传递价值时遇到麻烦。像往常一样,我已经通过了项目之间的文件引用。
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上?什么是解决方案?。
答案 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项目。它确实可以衡量你将如何做到这一点。
情况:数据库
情况:使用通信协议的共享解决方案
也许创建DLL也会有所帮助
我的个人解决方案是:(在真实网站和单独的背景项目上测试)
要创建共享项目,请使用VS模板(共享项目)。然后创建您的类,并在每个项目内部包含您的共享项目的项目参考部分。例如,项目A,项目B,项目SharedPr - >包含通信协议
项目A - >提述─>添加参考 - >共享项目。
项目B - >提述─>添加参考 - >共享项目。
那个通信协议就像你需要创建的驱动程序。
通过FILE轻松完成此操作。创建项目A写入和项目B读取的隐藏文件。存储在您的文件json字符串或json数组中然后读取所有行并反序列化所有内容,例如使用Newtonsoft.Json NuGet包。
我希望这会有所帮助。