首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在My.Settings中存储和检索Enum

如何在My.Settings中存储和检索Enum
EN

Stack Overflow用户
提问于 2021-12-27 16:51:17
回答 1查看 26关注 0票数 0

我试图通过一个组合框在My.Settings中存储和检索一个My.Settings Enum。我已经在项目设置中设置了此类型。我正在使用相关Enum值在设置表单上填充一个组合框:

代码语言:javascript
复制
With ControlAnchorCB
        .Items.AddRange([Enum].GetNames(GetType(ContentAlignment)))
End With

然后尝试将组合框设置为My.Settings中的组合框:

代码语言:javascript
复制
ControlAnchorCB.SelectedItem = My.Settings.ConnectorControlAnchor

但毫无价值可言。我还尝试用以下方式将选定的组合框值保存回My.Settings:

代码语言:javascript
复制
My.Settings.ConnectorControlAnchor = ControlAnchorCB.SelectedItem

但是,这会导致异常:"System.InvalidCastException:‘从字符串“MiddleCenter到键入'Integer’的转换无效‘”。

更新:另一个限制是我在Framework3.5(必须是这个版本)和vb.net中编码。因此,Enum.TryParse不可用。

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-12-28 14:14:08

在费尽心思想要解决这个问题之后:

代码语言:javascript
复制
    ' My.Settings.ConnectorControlAnchor Type is set to ContentAlignment in Project Settings.   
    
    Public Function TryParse(Of TEnum As {Structure, IConvertible})(ByVal value As String, <Out> ByRef result As TEnum) As Boolean
        Dim retValue = If(value Is Nothing, False, [Enum].IsDefined(GetType(TEnum), value))
        result = If(retValue, CType([Enum].Parse(GetType(TEnum), value), TEnum), Nothing)
        Return retValue
    End Function
    
    ' Populate ComboBox
    With ControlAnchorCB
        .Items.AddRange([Enum].GetNames(GetType(ContentAlignment)))
    End With
        
    ' Set combobox to value in My.Settings
    Dim ca As New ContentAlignment
    ControlAnchorCB.SelectedIndex = ControlAnchorCB.FindStringExact(My.Settings.ConnectorControlAnchor.ToString)

    ' To save value of combobox to My.Settings
    Dim ca As New ContentAlignment
    If TryParse(Of ContentAlignment)(ControlAnchorCB.SelectedItem, ca) Then My.Settings.ConnectorControlAnchor = ca
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70498250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档