首页 > 解决方案 > 单击按钮以填充收集的最新点的表单字段

问题描述

我有一个表单,在保存/添加下一个点时,单击 SaveAddNext 会出现一个弹出窗口,询问用户是否愿意根据旧字段填充新字段。这完美地工作。

但是,我无法将其实现为按钮形式。如果用户决定退出表单、重新输入、添加新点并想要自动填充,我也需要这种情况。

工作 SaveAddNext 代码的位:

Public Sub New(ByVal Record As Feature, 
               ByVal previousRecord As Till_NonTillStation, 
               ByVal SurficialType As enumTillTypes)

    MyBase.New(Record, Constants.COL_TILL_CREATED_BY, 
               Constants.COL_TILL_CREATION_DATE, Constants.COL_TILL_EDITED_BY, 
               Constants.COL_TILL_EDIT_DATE, 
               DirectCast(previousRecord.Geometry, Esri.ArcGISRuntime.Geometry.MapPoint))

    If MessageBox.Show("Autopopulate fields from last point collected?", "Record Autopopulation", MessageBoxButton.YesNo) = vbYes Then

        Me.EXPOSURE_TYPE = previousRecord.EXPOSURE_TYPE
        Me.EXPOSURE_HEIGHT = previousRecord.EXPOSURE_HEIGHT
        Me.UNIT_THICKNESS = previousRecord.UNIT_THICKNESS
        Me.UNIT_TYPE = previousRecord.UNIT_TYPE
        Me.TILL_FACIES = previousRecord.TILL_FACIES
        Me.PERCENT_CLAY = previousRecord.PERCENT_CLAY
        Me.FIRST_LITHOFACIES_TYPE = previousRecord.FIRST_LITHOFACIES_TYPE
        Me.CONSISTENCY = previousRecord.CONSISTENCY
        Me.COLOUR = previousRecord.COLOUR
        Me.CLAST_PROVIDENCE = previousRecord.CLAST_PROVIDENCE
        Me.CLAST_ROUNDNESS = previousRecord.CLAST_ROUNDNESS
        Me.NOTES = previousRecord.NOTES

    End If

到目前为止的按钮代码。我打电话给 Sub New,它会弹出窗口,但不读取任何数据。我不确定如何引用数据:

Private Sub btnAutopopulate_Click(sender As Object, e As RoutedEventArgs) Handles btnAutopopulate.Click

    previousRecord = New Till_NonTillStation(Constants.TillNonTillFeatureTable.CreateFeature, 
                                             _feature, enumTillTypes.Non_Till)

End Sub

标签: wpfvb.net

解决方案


在 VB.NET 中,Sub new 是对象的构造 函数。

当您单击btnAutopopulate时,您正在创建一个 的 实例 Till_NonTillStation,因此存储在其他实例中的任何先前数据都不可用。

不要使用(调用)Sub New(构造函数)。创建不同的函数或方法来设置以前的数据。

这是我根据您最后的评论提出的建议:

1:创建全局变量来存储你的数据:例如使用

Public Shared EXPOSURE_TYPE as string 这与使用 Me.EXPOSURE_TYPE 不同,后者取决于表单的实例。

以上是简单的方法,但是许多程序员不赞成使用全局变量,因此更好的方法是创建一个类(在表单之外)并将数据存储在其中。


推荐阅读