2

我正在为应用程序编写安装程序。作为其中的一部分,我需要获取用户选择的国家/地区名称。如果用户选择美国,我希望程序中的值是 US,即 2 个字母代码。

目前我实现了这样的组合框:

<Control Id="CountryList" Type="ComboBox" Sorted="yes" ComboList="yes" Property="COUNTRY" X="30" Y="118" Width="150" Height="15">
  <ComboBox Property="COUNTRY">
     <ListItem Value="United States" />
     <ListItem Value="India" />
     <ListItem Value="Australia" />
     <ListItem Value="United Kingdom" />
  </ComboBox>
</Control>

谁能建议我如何将属性更改COUNTRYUSINUK。我的意思是 2 个字母代码。

我还必须添加所有可能的国家。有没有更好的方法来实现这一点?

与此相关,我希望第一个组合框列出所有国家/地区。然后,第二个组合框可以显示属于该国家/地区的州。:)

4

1 回答 1

3

Text属性用于可见文本,Value将属性用于选择项目时要放入属性的值ComboBox

<Control Id="CountryList" Type="ComboBox" Sorted="yes" ComboList="yes" Property="COUNTRY" X="30" Y="118" Width="150" Height="15">
  <ComboBox Property="COUNTRY">
    <ListItem Text="United States" Value="US" />
    <ListItem Text="United Kingdom" Value="UK" />
    ...
  </ComboBox>
</Control>

至于你的其他问题:

我还必须添加所有可能的国家。有没有更好的方法来实现这一点?

您可以从这个线程中获得灵感并添加一个构建时步骤来生成<ListItem>元素的 XML 片段。

然后,第二个组合框可以显示属于该国家/地区的州。

请注意,当组合框中的选定项目发生更改时,无法捕获该事件。这是 MSI UI 的一个众所周知的限制。您可以尝试使用我称之为“双对话框”的解决方法来实现您想要的。有关更多信息,请参阅此线程

于 2012-08-09T13:32:18.533 回答