在c#中编辑子表单中的单个引用变量

时间:2012-09-10 06:58:30

标签: c# winforms

我正在尝试为我正在进行的项目制作一个程序。

我使用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;

这当然不是实际的代码,而是我想要做的主要事情。 任何帮助都很棒

编辑:我没有收到任何错误。传递的变量只是没有更新。当我去编辑它时,它只是在处理子编辑表单后恢复原状。

2 个答案:

答案 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进行更改。