gpt4 book ai didi

visual-studio-2015 - Visual Studio 2015 工具栏组合,如何正确管理用户输入的值?

转载 作者:行者123 更新时间:2023-12-04 12:57:34 25 4
gpt4 key购买 nike

我使用 VSCT 文件中的此设置为 Visual Studio 2015 的 VSIX 包中的工具栏定义了一个动态组合:

  <Combo guid="cmdExplorerToolbarSearchGUID" id="cmdExplorerToolbarSearchID" priority="0x0" type="DynamicCombo"
defaultWidth="50" idCommandList="cmdExplorerToolbarSearchGetListID">
<Parent guid="grpExplorerToolbar3GUID" id="grpExplorerToolbar3ID" />
<CommandFlag>DynamicVisibility</CommandFlag>
<CommandFlag>IconAndText</CommandFlag>
<CommandFlag>StretchHorizontally</CommandFlag>
<Strings>
<CanonicalName>cmdExplorerToolbarSearch</CanonicalName>
<ButtonText>Search</ButtonText>
<ToolTipText>Search elements in the model explorer</ToolTipText>
</Strings>
</Combo>

</Combos>

对应的 DynamicStatusMenuCommand实例定义如下:
    command = new DynamicStatusMenuCommand(
new EventHandler(this.OnPopUpMenuDisplayAction),
new EventHandler(this.OnCmdExplorerToolbarSearchSelected),
new CommandID(CmdExplorerToolbarSearchGUID, CmdExplorerToolbarSearchID));
commands.Add(command);

command = new DynamicStatusMenuCommand(
new EventHandler(this.OnPopUpMenuDisplayAction),
new EventHandler(this.OnCmdExplorerToolbarSearchGetList),
new CommandID(CmdExplorerToolbarSearchGUID, CmdExplorerToolbarSearchGetListID));
commands.Add(command);

最后是 OnCmdExplorerToolbarSearchSelected像这样的事件处理程序:
private void OnCmdExplorerToolbarSearchSelected(object sender, EventArgs e)
{
// Process the event arguments

OleMenuCmdEventArgs args = e as OleMenuCmdEventArgs;
if (args != null)
{
// Process values

string inValue = args.InValue as string;
IntPtr outValue = args.OutValue;

if (outValue != IntPtr.Zero)
{
// When outValue is not null, the IDE is requesting the current value for the combo

Marshal.GetNativeVariantForObject(this.SearchHandler.CurrentValue, outValue);
}
else if (inValue != null)
{
this.SearchHandler.Search(this.PresentationModel3ExplorerToolWindow.Explorer, inValue);
}
}
}

这会在工具箱中产生一个很好的组合:

Print-screen of the toolbar

问题是,例如,如果用户输入“单位”并按 Enter使用 inValue != null 调用事件处理程序并执行搜索。但是,如果他输入其他内容(例如:客户)并按 Tab (否 Enter ),组合将恢复到先前的值(“单位”),因为使用 args.OutValue != IntPtr.Zero 调用处理程序。

当用户输入某些内容并将焦点从组合移开而不按 Enter 时,获得回调的技巧是什么? ?并且,鉴于此,我怎样才能获得当时组合上的值(value)?

最佳答案

我没有试过这个,但是如果你使用 OleMenuCommand 安装你的命令,您可以提供一个“已更改”处理程序,它似乎应该在组合框中的文本发生更改时被调用。这可能让你做你想做的事?

关于visual-studio-2015 - Visual Studio 2015 工具栏组合,如何正确管理用户输入的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34997948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com