SetOriginalValueメソッド

現在値を記憶します。
(CustomInterface.IOriginalValueChanged.SetOriginalValueを実装)

構文

Public Sub SetOriginalValue()

使用目的

画面の入力内容が、ある時点から変化していた場合、確認メッセージなどを表示する際に使用します。

サンプルコード

'---------------------------------------------------------------------------------------------------
'フォーム内に配置されたすべてのカスタムコントロールの値が
'CustomButton1がクリックされてからCustomButton2がクリックされるまでの間に
'変化したかどうかをチェックします。
'---------------------------------------------------------------------------------------------------

'CustomButton1クリックイベント
Private Sub CustomButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles CustomButton1.Click
  'フォーム内に配置されたすべてのカスタムコントロールの現在値を記憶します。
  Call SetOriginalValue(Me)
End Sub

'CustomButton2クリックイベント
Private Sub CustomButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles CustomButton2.Click
  'フォーム内に配置されたすべてのカスタムコントロールの値が変化したかどうかをチェックし
  '変化しているコントロールがある場合は確認メッセージを表示します。
  If IsOriginalValueChanged(Me) = True Then
    MessageBox.Show("CustomButton1がクリックされてからコントロールの値が変化しました。")
  End If
End Sub

'フォーム内に配置されたすべてのカスタムコントロールの現在値を記憶します。
Private Sub SetOriginalValue(ByVal parent As Control)
  For Each ctrl As Control In parent.Controls
    If ctrl.HasChildren = True Then
      Call SetOriginalValue(ctrl)
    End If

    If TypeOf (ctrl) Is CustomControls.CustomInterface.IOriginalValueChanged Then
      CType(ctrl, CustomControls.CustomInterface.IOriginalValueChanged).SetOriginalValue()
    End If
  Next
End Sub

'フォーム内に配置されたすべてのカスタムコントロールの値が変化したかどうかをチェックします。
Private Function IsOriginalValueChanged(ByVal parent As Control) As Boolean
  For Each ctrl As Control In parent.Controls
    If ctrl.HasChildren = True Then
      Call SetOriginalValue(ctrl)
    End If

    If TypeOf (ctrl) Is CustomControls.CustomInterface.IOriginalValueChanged Then
      If CType(ctrl, CustomControls.CustomInterface.IOriginalValueChanged).IsOriginalValueChanged Then
        Return True
      End If
    End If
  Next
End Sub