我正在为应用程序编写安装程序。作为其中一部分,我需要获取用户选择的国家/地区名称。如果用户选择美国,我希望在我的程序中使用值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>
任何人都可以建议我如何将属性COUNTRY
更改为US
或IN
或UK
等。我的意思是2个字母代码。
此外,我还要添加所有可能的国家/地区。有没有更好的方法来实现这个目标?
与此相关,我希望第一个组合框列出所有国家/地区。然后第二个组合框可以显示属于该国家的状态。 :)
答案 0 :(得分:3)
Use the Text
attribute for a visible text, and Value
attribute for the 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>
至于你的其他问题:
此外,我还要添加所有可能的国家/地区。任何更好的方式 完成这个?
您可以从this thread中获取灵感,并添加构建时步骤以生成<ListItem>
元素的XML片段。
然后第二个组合框可以显示属于该组合的状态 国家。
请注意,在组合框中更改选定项目时无法捕获事件。这是MSI UI的一个众所周知的限制。您可以尝试使用我称之为“双对话框”的解决方法来实现您的目标。有关详细信息,请参阅this thread。