0

C# で Visual Studio 用のプラグインを開発しています。プラグインには、設定ページとコマンドを呼び出すためのツールバーのいくつかのボタンがあります。

問題は、状況によっては、特定のボタンを非表示にしたいということです。私ができる最善のことは、ボタンを無効にすることです。

可視性を動的に変更することは可能ですか?

編集:この質問は携帯から書いたので、詳細が足りないかもしれません...

.vsct ファイルにツールバーを作成します (同じファイルにメニューを作成しました)

<Button guid="guidProductCmdSet" id="startCommand" priority="0x0100" type="Button">
    <Parent guid="guidProductCmdSet" id="ToolbarGroup1" />
        <Icon guid="Icons" id="startIcon" />
        <Strings>
          <CommandName>startCommand</CommandName>
          <ButtonText>Start</ButtonText>
        </Strings>
</Button>

拡張機能が初期化されたら、次のコマンドを作成します。

var mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
if (null != mcs)
{
  _startCommandId = new CommandID(GuidList.guidProducyVSICmdSet, (int)pkgCmdIDList.startCommand);
  var startItem = new MenuCommand(StartProcess, _startCommandId);
  mcs.AddCommand(startItem);
}

その後、次のようにツールバーからいくつかのボタンを無効にすることができます。

var mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
var mc = mcs.FindCommand(commandId);
if (mc != null)
{
    mc.Enabled = false;
}

mc.Visible = false を試しましたが、何もしません。

4

2 に答える 2

1

どうやら、これは動作します...

var commandBars = ((CommandBars)_dte2.CommandBars);
if (commandBars == null)
{
    return;
}
var commandBar = commandBars["MyPluginProductName"];
if (commandBar == null)
{
    return;
}
var startButton = commandBar.Controls["startCommand"];
if (startButton == null)
{
    return;
}
startButton.Visible = false;
于 2013-02-04T14:31:22.310 に答える