应用属性更改事件

时间:2017-10-07 15:23:49

标签: vb.net

我意识到这可能是勺子喂食,但我已经尝试了许多其他方法来做到这一点,但无济于事。我已经研究了很多,包括我认为可能是正确方法的那个" variable/property changed event in vb.net"但我不能按照我想要的方式工作。我是编码的新手,我试图在我的变量上添加一个on change事件,所以这是我的样本。

Public Class FormMode
    Public Property ViewMode As Boolean
    Public Property EditMode As Boolean
    Public Property NewMode As Boolean
End Class

所以基本上我有表单,每个表单都有自己的FormMode。表格模式一次只能为1。即

ViewMode = True
EditMode = False
NewMode = False

或者

ViewMode = False
EditMode = True
NewMode = False

或者

ViewMode = False
EditMode = False
NewMode = True

用户可以并将更改表单的模式。我想要的是如果他们改变ViewMode = True,EditMode和NewMode必须自动设置为false。与其他两个案件相同。请注意,它们将从另一个表单更改为值。此外,我希望能够查看表单是否采用何种形式(ViewMode / EditMode / NewMode)。我是以正确的方式做到这一点还是应该尝试不同的方法?请忍受我的愚蠢和多余的问题,因为我已经尽力了,但不幸的是失败了。非常感谢!

2 个答案:

答案 0 :(得分:0)

我按照建议使用了enum并设法满足我的需求。谢谢

Public Class Form1
    Public Property TFormMode As FormMode
    Public Enum FormMode
       ViewMode
       EditMode
       NewMode
    End Enum

    Public Function IsView() As Boolean
        TFormMode = FormMode.ViewMode
    End Function

    Public Function IsNew() As Boolean
        TFormMode = FormMode.NewMode
    End Function

    Public Function IsEdit() As Boolean
        TFormMode = FormMode.EditMode
    End Function

    Public Sub UpdateFormMode(Mode As FormMode)
        TFormMode = Mode
    End Sub
End Class

我仍然使用3布尔值,因此更容易检查它是否处于某种模式。

答案 1 :(得分:0)

您发布的答案代码无法按预期运行。每次检查IsView是否为真时,您的代码实际上会将TFormMode设置为FormMode.ViewMode并且实际上不会返回true或false布尔值 - {{{ 1}}和IsNew

您应该使用以下代码。我将通过演练解释。

IsEdit声明为私有变量会为您的班级提供一个可在内部使用的变量,而且外部世界无法直接看到该变量

你的Enum很好。

_TFormMode声明为公共属性会为您的类外的代码提供与私有字段TFormMode进行交互的安全方式。这样,使用_TFormModeSet代码块,您可以添加任何验证代码或返回您喜欢的任何信息。这会让你Get重新分配。

函数UpdateTFormMode现在将返回表达式IsView的结果。

较长版本的

_TFormMode = FormMode.ViewMode

将是

Return _TFormMode = FormMode.ViewMode

其余的函数执行相同的操作,但测试其他枚举值

If _TFormMode = FormMode.ViewMode Then
    Return True
Else
    Return False
End If