0

vsct ファイルのツールバーにあるコンボ ボックスを埋めようとしています。コンボ内のアイテムを指定するにはどうすればよいですか? 正常にコンパイルされますが、デバッグ時にアイテムが表示されません。

<Combos>
  <Combo guid="guidIDEToolbarCmdSet" id="cmdEnv" priority="0x0100" type="DropDownCombo" defaultWidth="130" idCommandList="comboItems">
    <Parent guid="guidIDEToolbarCmdSet" id="ToolbarGroup"/>
    <CommandFlag>IconAndText</CommandFlag>
    <CommandFlag>CommandWellOnly</CommandFlag>
    <Strings>
      <ButtonText>Environment:</ButtonText>
      <CommandName>Dev</CommandName>         
      <CommandName>UserTest</CommandName>
      <CommandName>LiveTest</CommandName>
      <CommandName>LiveDebug</CommandName>        
    </Strings>
  </Combo>
</Combos>

�</p>

4

1 に答える 1

1

コンボ ボックスの項目は、追加のコマンド (idCommandList属性で指定されたコマンド) によって提供されます。ファイルCommandName内のコンボボックス定義に複数の要素を追加するだけでは機能しません。VSCT

実際の項目は、リスト コマンドの実行ハンドラーによって入力できます。たとえば、次のようになります。

private void InvokeGetList(object sender, EventArgs e)
{
    var eventArgs = e as OleMenuCmdEventArgs;
    if (eventArgs != null)
    {
        // Note: works only for dynamic- and dropdown- combos
        IntPtr pOutValue = eventArgs.OutValue;
        if (pOutValue != IntPtr.Zero)
        {
            string[] valueStrings = new[] { "One", "Two", "Three" };
            Marshal.GetNativeVariantForObject(valueStrings, pOutValue);
        }
    }
}
于 2014-10-11T06:54:15.567 に答える