代码之家  ›  专栏  ›  技术社区  ›  Nim

应用程序配置设置为ComboBox

  •  0
  • Nim  · 技术社区  · 11 年前

    以下是应用程序配置代码

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <configSections>
        </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>
        <appSettings>
            <add key="DBServer" value="Localhost"/>
            <add key="DBServer" value="Sql2005rs"/>
            <add key="DBName" value="Everest"/>
       </appSettings>
    </configuration>
    

    我正在尝试在一个组合框中返回值Local Host和Sql2005rs,这是我正在使用的值。任何人都可以告诉我它为什么失败。

    public Form1()
    {
        InitializeComponent();
            var DBServerNames = ConfigurationManager.AppSettings.AllKeys .Where(key => key.StartsWith("DBServer")) .Select (key => ConfigurationManager.AppSettings[key]) .ToArray();
            DBServer.Items.AddRange(DBServerNames);
    }
    

    然而,它只返回sql2005rs,谁知道为什么?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Darren Wainwright    11 年前

    当您使用同一个键进行多个设置时,您将始终获得最后一个设置。当您有多个相同的键时,每个键都会被下一个键覆盖。

    因此,与其这样做(这真的不是一件很好的事情)-键应该是唯一的,就像在任何键/值字典中一样-不如将设置更改为如下:

    <appSettings>
            <add key="DBServers" value="Localhost,Sql2005rs"/>
            <add key="DBName" value="Everest"/>
       </appSettings>
    

    然后拔出 DBServers 值并解析该值。类似于:

    string[] myServers= ConfigurationManager.AppSettings["DBServers"].Split(',');