【问题标题】:How can i do a for loop with vb.net's my.settings name and value?如何使用 vb.net 的 my.settings 名称和值进行 for 循环?
【发布时间】:2017-07-28 15:49:19
【问题描述】:

我想要一些帮助,我已经尝试在谷歌上搜索并尝试在这里搜索但没有运气。

到目前为止我尝试过的如下:-

For Each value As Configuration.SettingsPropertyValue In My.Settings.PropertyValues

    Dim myrecord As String = My.Settings.PropertyValues.ToString

    sql_all_matching_records = String.Format("")

Next

但是当我在调试器模式下运行并在 for 循环中放置一个断点时,这只会被跳过。

我想要做的是能够遍历 my.settings 中的变量名,然后获取它的值并将其与 SQL 查找进行比较。我唯一苦苦挣扎的是遍历 my.settings。

EDIT1:上面已经回答了,但是得到图片中的错误,是不是写错了代码?不确定我是否理解 vb.net 试图告诉我的内容。我认为这是正确的。

【问题讨论】:

  • 我能够重现您的问题,奇怪的解决方案,但是如果您在循环之前从设置中访问一个值(即 Dim dummyString As String = My.Settings.aSettingName),那么它似乎可以工作。这感觉就像尚未加载设置的情况,但我必须承认我不太熟悉设置的初始化方式/时间。但是在循环前面添加该行并获取“虚拟”设置的值似乎填充了 PropertyValues 集合并允许循环执行
  • 哇 - 很好的答案 - 它奏效了,但现在它给了我一个新问题,我将编辑问题,然后将上面的内容作为正确的答案发布,并将作为答案。

标签: vb.net for-loop properties my.settings


【解决方案1】:

有点免责声明,我不熟悉如何/何时加载设置以及填充 PropertyValues 集合,但在访问设置值之前它似乎不包含任何内容。这是一个奇怪的解决方法,但在遍历集合之前从设置中获取一个值似乎可以填充它。您的 InvalidCast 异常发生是因为您尝试设置 myrecord = a collection.tostring。我们已经知道集合有多个值,因为我们正在迭代它们,所以我们不能只调用 .tostring 。这就像说 Array.ToString(),只是不能那样工作。我认为您真正要寻找的是 value.PropertyValue.ToString,它将保存您想要获取的设置值。应用这两项更改后,您会得到:

    Dim dummy As String = My.Settings.dummySetting
    For Each value As System.Configuration.SettingsPropertyValue In My.Settings.PropertyValues

        'Dim myrecord As String = My.Settings.PropertyValues.ToString
        Dim myrecord As String = value.PropertyValue.ToString

        sql_all_matching_records = String.Format("")
    Next

dummySetting 只是我在设置中调用的一个空值。希望这会有所帮助

【讨论】:

    【解决方案2】:

    我认为你的第 2 行是错误的......

    For Each value As Configuration.SettingsPropertyValue In My.Settings.PropertyValues
    
        Dim myrecord As String = value.ToString
    
        sql_all_matching_records = String.Format("")
    
    Next
    

    我没有尝试过您的代码,但我认为您在第 3 行中所做的是获取每个设置的所有属性并将它们连接成一个。

    编辑为指向正确的第 2 行而不是第 3 行

    【讨论】:

    • 嗨,正如答案中所说,它甚至没有到达调试器中的第 2 行,我在第 2 行放了一个中断,但从不中断只是跳过了整个循环。
    【解决方案3】:

    有些存储区不知道它们从哪里开始或结束!当您将光标发送到顶部时,它会向上移动,直到用完记录并在光标下方的第一条记录处停止。您的第一个命令必须关闭才能到达第一条记录。

    【讨论】:

      【解决方案4】:

      如果要查找不区分大小写的查找,您可以执行以下操作:

              For Each AProperty As Configuration.SettingsPropertyValue In My.Settings.PropertyValues
                  If AProperty.Name.ToLower = ("ExPectedName").ToLower Then
                      ReturnValue = AProperty.PropertyValue
                      Exit For
                  End If
              Next
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-04-23
        • 1970-01-01
        • 2022-10-13
        • 2014-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多