之前的usercontrol实例与最后一个实例具有相同的值。为什么?

时间:2016-05-09 11:11:51

标签: user-controls instance

在我的应用程序(winForm - 使用devexpress组件)中,我有相同的UserControl标签(在控制加载时根据用户选择使用不同的值)。

我的问题是所有userControl个实例都与最后一个实例具有相同的值。

为什么会这样?

视觉角色中的代码。

(当用户点击按钮创建新用户控件时)

BEGSR manageCreateNew
    DCLSRPARM sender Type(*Object)
    DCLSRPARM e Type(DevExpress.XtraBars.ItemClickEventArgs)

    DCLFLD appCode Type(*String)
    DCLFLD fileStatusParm Type(*Boolean)
    DCLFLD parmCompany Type(*Char) Len(3)
    DCLFLD parmProtNo Type(*Zoned) Len(5,0)
    DCLFLD parmProtYear Type(*Zoned) Len(2,0)
    DCLFLD TabForm1 Type(KYKLADES_Menu_Protocol.ManageProtocol)
    DCLFLD TabFormSupplier Type(KYKLADES_Menu_Supplier.SupplierForm)
    DCLFLD infoBoxResult Type(DialogResult)
    DCLFLD IsProjectSubHeaderOpen Type(*Boolean) Inz(*True)
    DCLFLD supplierCodeParm Type(*String)
    DCLFLD isView Type(*Boolean)
    DCLFLD isOldVsl Type(*String) Inz(" ")

    Try
        manageCreate = "Create" + appCode
        IsProjectSubHeaderOpen = CheckIfProjectSubHeaderCOpen(IsProjectSubHeaderOpen)
        if IsProjectSubHeaderOpen = *False

            barbuttonItem_Save.Enabled = *True
            barbuttonItem_Close.Enabled = *True
            barButtonItem_New.Enabled = *False
            barButtonItem_Edit.Enabled = *False
            barButtonItem_Delete.Enabled = *False

            appCode = %SubSt(tabControlSubCategory.SelectedTabPage.Tag.ToString().Trim(), 1, 3)
            projectOption = %SubSt(tabControlSubCategory.SelectedTabPage.Tag.ToString().Trim(), 4, 3)

            if projectOption = '005'
                fileStatusParm = *True
                selectionParm = *True
                parmCompany = *Blanks
                parmProtNo = *Zeros
                parmProtYear = *Zeros
                isView = *False
                isSaved = *False
                TabForm1 = *new KYKLADES_Menu_Protocol.ManageProtocol(fileStatusParm,parmCompany,parmProtNo,parmProtYear,isOldVsl,isView)
                WITH TabForm1
                .Dock = System.Windows.Forms.DockStyle.Fill
                ENDWITH
                tabPageSubCategoryHeader = *new DevExpress.XtraTab.XtraTabPage()
                WITH tabPageSubCategoryHeader
                    .ImageIndex = FileLibrary.APPIMG //Image
                    .Name = projectOption + "manageCreate"
                    .Dock = System.Windows.Forms.DockStyle.Fill
                    .Size = *new System.Drawing.Size(525I, 343I)
                    .Text = "Create Protocol"
                    .Tag = "manageCreate"
                    .Controls.Add(TabForm1 *As Control)
                ENDWITH

                tagString = "Create"+appCode

            endIf

这是我第一次使用VS获取您的信息。我认为当用户更改选项卡(此时)必须获得正确的用户控件实例?这是对的吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

为您的信息我使用ASNA Visual RPG 14 for visual studio 2015。

问题与对象的减速和SHARED参数的使用有关。

来自ASNA简报。

术语混乱 请注意,AVR和VB使用Shared来指示变量由类拥有,而不是由类实例拥有的非共享成员。 AVR和VB都使用Static来表示变量的值在例程调用中持续存在。

由于