2

アプリケーションのインストーラーを作成しています。その一環として、ユーザーが選択した国名を取得する必要があります。ユーザーが United States を選択した場合、私のプログラムでは 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プロパティをUSor INorなどに変更する方法を教えてくださいUK。2文字のコードを意味します。

また、考えられるすべての国を追加する必要があります。これを達成するためのより良い方法はありますか?

これに関連して、最初のコンボボックスにすべての国をリストする必要があります。2 番目のコンボボックスは、その国に属する州を表示できます。:)

4

1 に答える 1

3

Text表示されるテキストには属性を使用しValueComboBox、項目が選択されたときにプロパティに入力される値には属性を使用します。

<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 フラグメントを生成するビルド時のステップを追加できます。

2 番目のコンボボックスは、その国に属する州を表示できます。

コンボボックスで選択した項目が変更されたときにイベントをキャッチする方法がないことに注意してください。これは、MSI UI のよく知られた制限です。私が「ツインダイアログ」と呼んでいる回避策で、あなたが望むものを達成しようとすることができます。詳細については、このスレッドを参照してください。

于 2012-08-09T13:32:18.533 に答える