1

我目前正在尝试为我正在从事的项目制作程序。

我使用 2 个最终嵌入到父 WinForm 中的用户窗体。

我需要做但似乎没有工作的是创建对我的设置类的引用,并让用户表单直接编辑变量。数据使用序列化的 XML 存储

我有一个类可以控制我的 xml 文件的读/写。它首先在 ParentForm 中创建。然后,我有几个动态控件,它们从单独的用户表单中的 List<> 变量中读取。然后我使用该数据创建另一个用户窗体,它允许我查看/编辑这些变量。

我目前可以很好地查看它们,但我无法编辑变量。我对使用引用不是很熟悉,因为大多数时候我使用事件或只是从表单复制数据,导致(我觉得)不必要的开销。

为了更好地说明

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;

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

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

4

2 回答 2

0

第一:考虑到我认为它是引用类型的类型的名称。所以在这种情况下,您不需要像带关键字的引用一样传递它。StorageClassref

第二:如果这只是一个data-class,包含一些必须在程序的不同域之间共享的数据的类,请在单独的类中声明它,例如static一个。

一个伪代码

public static clss StorageClass 
{
     public StorageData Data1
     public StorageData Data2
     public StorageData Data3

}

一次正确初始化该类中的所有字段,您可以在任何形式的应用程序中使用它,例如简单访问StorageClass.Data1

于 2012-09-10T07:03:54.060 回答
0

你可以有一个通用的设置类,它从 XML 中读取配置,我相信你已经拥有了。
假设您有一个下拉选择,它指示要
在 MainForm 的面板中加载和显示哪个用户控件,因此您从 SelectionChangedEvent 调用用户控件并将
设置类传递给 UserControls 的构造函数。
您还可以在 UserControls 中公开事件并从 MainForm 订阅这些事件,以根据用户控件中的操作在 MainForm 中进行任何更改。
假设您要编辑某些内容,从用户控件触发一个事件并在 MainParent 窗体中订阅该事件,然后从 MainForm 进行更改。

于 2012-09-10T07:06:31.420 回答