我意识到这可能是勺子喂食,但我已经尝试了许多其他方法来做到这一点,但无济于事。我已经研究了很多,包括我认为可能是正确方法的那个" 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)。我是以正确的方式做到这一点还是应该尝试不同的方法?请忍受我的愚蠢和多余的问题,因为我已经尽力了,但不幸的是失败了。非常感谢!
答案 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
进行交互的安全方式。这样,使用_TFormMode
和Set
代码块,您可以添加任何验证代码或返回您喜欢的任何信息。这会让你Get
重新分配。
函数UpdateTFormMode
现在将返回表达式IsView
的结果。
较长版本的
_TFormMode = FormMode.ViewMode
将是
Return _TFormMode = FormMode.ViewMode
其余的函数执行相同的操作,但测试其他枚举值
If _TFormMode = FormMode.ViewMode Then
Return True
Else
Return False
End If