我正在尝试为我正在进行的项目制作一个程序。
我使用2个最终嵌入到父WinForm中的UserForms。
我需要做的,似乎不起作用,是创建对我的设置类的引用,并让用户表单直接编辑变量。数据使用序列化XML
存储我有一个控制读取/写入xml文件的类。它首先在ParentForm中创建。然后我有几个动态控件从List<>读取变量以单独的用户形式。然后我使用该数据创建另一个UserForm,允许我查看/编辑这些变量。
我现在可以很好地查看它们,但我无法编辑变量。我不太熟悉使用引用,因为大多数时候我使用任何事件或只是将数据从表单复制到表单,导致(我觉得)不必要的开销。
更好地说明
WinForm - >选择类别 - >绘制UserForm1(在类别中显示项目) - >选择项目 - >绘制UserForm2(编辑项目)
所有表单都需要访问WinForm中的Settings变量。
这就是我目前正在做的事情:
编辑表格:
public partial class EditPage: UserControl
{
public StorageClass refSettings;
public EditPage(ref StorageClass pSettings)
{
refSettings = pSettings;
分类表格:
public partial class Categories: UserControl
{
public StorageClass programSettings;
public Categories(ref StorageClass pSettings)
{
programSettings = pSettings;
这当然不是实际的代码,而是我想要做的主要事情。 任何帮助都很棒
编辑:我没有收到任何错误。传递的变量只是没有更新。当我去编辑它时,它只是在处理子编辑表单后恢复原状。
答案 0 :(得分:0)
首先:对StorageClass
类型的名称进行总结我认为它是引用类型。因此,在本案例中,您不需要像使用ref
关键字的引用那样传递它。
第二:如果这只是一个data-class
,那么包含一些必须在程序的不同域之间共享的数据的类,在单独的类中声明它,例如static
一个。
伪代码。
public static clss StorageClass
{
public StorageData Data1
public StorageData Data2
public StorageData Data3
}
有一次正确初始化该类中的所有字段,您可以在应用程序的任何形式中使用它,例如简单访问StorageClass.Data1
答案 1 :(得分:0)
你可以有一个公共设置类,它从XML中读取配置,我相信你已经拥有了
假设您有一个下拉选项,指示要加载和显示内部的用户控件
MainForm中的一个面板,因此您从SelectionChangedEvent调用用户控件并传递
将类设置为UserControls的构造函数
您还可以在UserControls中公开事件并从MainForm订阅这些事件
根据用户控件中的操作,在MainForm中进行任何更改。
假设您要编辑某些东西从usercontrol触发事件并在MainParent窗体中订阅该事件,然后从MainForm进行更改。