我在同一个表单上有两个不同的网格控件。它们共享相同的上下文菜单。当我选择上下文菜单项时,我无法确定哪个控件是所有者。
我目前有以下菜单:
<Menu Grid.Row="1" Margin="3" Background="Transparent">
<MenuItem Name="mnuFile" Header="File" Background="#28FFAE04" Foreground="#FFFED528">
<MenuItem Name="mnuSettings" Header="Settings" Background="#28FFAE04" Foreground="#FFFED528" />
<MenuItem Name="mnuExit" Header="Exit" Background="#28FFAE04" Foreground="#FFFED528" />
</MenuItem>
<MenuItem Name="mnuView" Header="View" Background="#28FFAE04" Foreground="#FFFED528" />
<MenuItem Name="mnuAbout" Header="About" Background="#28FFAE04" Foreground="#FFFED528" />
</Menu>
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何使下降的部分变成半透明或完全透明的类似于浮动文本。这样我就可以看到下面的表格了。
任何帮助,将不胜感激。谢谢!
女士们先生们好!
我有一个MenuStrip并且想要一个ContextMenu具有相同结构的。我可以使用我的MenuStripasContextMenu或ContextMenu使用 DataSource from快速创建MenuStrip吗?
谢谢!
我在 C# 中的 Windows 窗体中工作。我有一个方法,我将MenuItems添加到 s 中,ContextMenu并为MenuItems实现了事件处理程序,如下所示:
public void Form1_Load()
{
int index = 0;
ArrayList ar = new ArrayList();
ContextMenu cm = new ContextMenu();
cm.Name = "Test";
MenuItem mi = new MenuItem("All");
mi.Click += new EventHandler(mi_All);
}
private void mi_All(object sender, EventArgs e)
{
// Here I want to access the arraylist and integer specified in above method
}
Run Code Online (Sandbox Code Playgroud)
如何才能做到这一点?一种可能的解决方案是将ArrayList和声明int为全局变量,但我有很多这样的变量。如果我采用这种方法,变量将一直存在,直到表单被处理。所以这行不通。有没有另一种方法来实现这一目标?
我需要设计一个ContextMenu包含一个MenuItem,它MenuItem有一个更深层次的菜单列表,它绑定到ObservableCollection我的 ViewModel类型的属性。代码如下所示:
<ContextMenu DataContext="{Binding PlacementTarget.DataContext,
RelativeSource={RelativeSource Self}}" >
...
<MenuItem Header="Map to account" >
<ItemsControl ItemsSource="{Binding RelatedAccounts}" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Number}"
Command="{Binding PlacementTarget.DataContext.MapToAccountCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
CommandParameter="{Binding}"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</MenuItem>
...
</ContextMenu>
Run Code Online (Sandbox Code Playgroud)
这个想法是当用户从 UI 中右键单击一个支付项目,然后转到“映射到帐户”菜单项时,将显示更深层次的菜单项并列出所有相关帐户供用户选择(如您可以看到ItemsControl绑定到RelatedAccounts)
一切正常,上下文菜单正确显示了我从 ViewModel 公开的所有相关帐户,当用户右键单击一个帐户时,ViewModel 中的Command属性MapToAccountCommand将使用所选帐户的传递参数执行。
但是有一种我不想要的行为:当鼠标进入比“映射到帐户”菜单更深的一层时,它实际上突出显示了整个菜单项集合。请看下面的图片:

以上是我将鼠标悬停在“美元账户 1”上时的情况
而且即使鼠标没有在任何特定的帐户上,但在更深层次的菜单中的其他区域,高亮效果仍然存在,见图:

这显然感觉不对。谁能告诉我我做错了什么?谢谢!
我正在开发一个 C# WinForms 应用程序,其中有许多进程都由“主”应用程序管理。在这个主应用程序中,每个进程都由它自己可视化,FlowLayoutPanel其中包含许多用于各种功能的按钮。我称这些面板为“进程块”。
然而,当进行许多这样的过程时,并不是所有的块都能轻松地适应屏幕。出于这个原因,我正在实施一个“紧凑模式”,它隐藏了所有进程块的所有按钮,只留下它们的名称、它们的状态和开始/停止按钮可见。然后我将 a 分配ContextMenuStrip给每个进程块,其中我将所有列出的按钮显示为 a,ToolStripMenuItem以便我可以通过这种方式访问进程块的所有功能。我正在ContextMenuStrip动态清除这些s 并在打开菜单时添加项目。我通过在所有迭代的子控件做到这一点FlowLayoutPanel,看看他们是否有类型的Button,如果是的话,我将它们添加到ContextMenuStrip。请参阅下面的代码片段:
private void PanelCmsOpened(object sender, EventArgs e) {
try {
ContextMenuStrip cMenuStrip = (ContextMenuStrip) sender;
// Clear all items from the context menu
cMenuStrip.Items.Clear();
// Loop over all controls in the FlowLayoutPanel
foreach (var c in CPanel.Controls) {
Button btn = c as Button;
if (btn == null) continue; // Not a button, continue
// Get the text …Run Code Online (Sandbox Code Playgroud) 所以我有一个复杂的上下文菜单。它不仅仅是菜单项。它也有单选按钮,底部有一个 stackpanel,里面有一个 integerupdown 框。

<Button.ContextMenu>
<ContextMenu>
<RadioButton Tag="30" Content="30 seconds" GroupName="adLength" Checked="adLength_Checked" IsChecked="True"/>
<RadioButton Tag="60" Content="1 minutes" GroupName="adLength" Checked="adLength_Checked"/>
<RadioButton Tag="90" Content="1 min 30 sec" GroupName="adLength" Checked="adLength_Checked"/>
<RadioButton Tag="120" Content="2 minutes" GroupName="adLength" Checked="adLength_Checked"/>
<RadioButton Tag="150" Content="2 min 30 sec" GroupName="adLength" Checked="adLength_Checked"/>
<RadioButton Tag="180" Content="3 minutes" GroupName="adLength" Checked="adLength_Checked"/>
<Separator/>
<MenuItem x:Name="advert_Auto" Header="Run Automatically" IsCheckable="true" StaysOpenOnClick="True"/>
<StackPanel Orientation="Horizontal">
<TextBlock>every</TextBlock>
<xctk:IntegerUpDown x:Name="advert_Time" Value="30" Minimum="15" Width="50" Margin="5,0" />
<TextBlock>min</TextBlock>
</StackPanel>
</ContextMenu>
</Button.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
该<MenuItem>对象可以选择staysopenonclick; 当有人单击该项目时,上下文菜单保持打开状态。该<RadioButton>对象没有这个选项,但他们保持开放反正。
我遇到的问题是最后一项,<StackPanel>. 当用户单击 …
在 Google Chrome 扩展程序中,我知道如何在选定文本上显示上下文菜单。
chrome.contextMenus.create({
'title': 'TEST',
'contexts': ['selection'],
'id': "test"
});
chrome.contextMenus.create({
'title': 'submenu',
'contexts': ['selection'],
'id': "test_1",
'parentId': "test",
'onclick': menu.onClicked_
});
Run Code Online (Sandbox Code Playgroud)

但我只想在所选文本位于“可编辑元素”(输入文本、文本区域、内容可编辑 DIV 等)中时才显示此菜单。我怎样才能做到这一点 ?
谢谢!
javascript google-chrome contextmenu google-chrome-extension
有没有办法在 Ace 编辑器上检测右键单击事件?
我一直在尝试添加这样的侦听器:
editor.session.addEventListener('contextmenu', function(e) {
e.preventDefault();
alert('success!');
return false;
}, false);
Run Code Online (Sandbox Code Playgroud)
和这个
editor.addEventListener('contextmenu', function(e) {
e.preventDefault();
alert('success!');
return false;
}, false);
Run Code Online (Sandbox Code Playgroud)
但没有成功。
我希望有一个上下文菜单,在搜索字段中输入文本时显示搜索结果.这是OS X中默认邮件应用程序的 图像.我知道如何根据用户的搜索请求过滤字符串数组,但我不知道如何以这种方式显示它.我正在使用Swift和Cocoa应用程序.任何帮助表示赞赏.
contextmenu ×10
c# ×3
winforms ×3
wpf ×3
javascript ×2
vb.net ×2
.net ×1
ace-editor ×1
button ×1
cocoa ×1
controls ×1
dom-events ×1
highlight ×1
itemscontrol ×1
macos ×1
menu ×1
menuitem ×1
menustrip ×1
swift ×1