我有一个表单,用户可以添加控件,当他们右键单击它时会弹出一个上下文菜单,其中包含一个选项,可以显示他们右键单击的控件的属性.我遇到的问题是试图决定如何找出用户右键点击的控件,因为它可以是任意数量的控件,然后将控件集中在表单上.有没有人有任何好的建议?我应该只使用鼠标事件的(对象发件人)部分吗?
谢谢.
我有一个活动就是它的onCreate方法:
registerForContextMenu(theView);
并在onCreateContextMenu中:
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(blablabla);
Run Code Online (Sandbox Code Playgroud)
这很好用,但问题是当屏幕旋转时上下文菜单消失.如何解决这个问题?
谢谢阅读!
考虑使用ListView
设置了上下文菜单的Android registerForContextMenu
.ListView
当用户长按项目视图时,将显示项目的上下文菜单.
另外,当用户点击(不是长按)项目时(如果满足某些条件),我想显示上下文菜单.是否有可能做到这一点?怎么样?
如何检测右键单击的对象或ID或用户?我正在使用onContextMenu来触发一个函数,但我不知道如何检测目标.
在这个简单的示例中,我想在显示MessageBox
上下文菜单之前显示一个.
我在'XAML'上写下这段代码:
<Border>
<Border.ContextMenu>
<ContextMenu ContextMenuOpening="ContextMenu_ContextMenuOpening">
<MenuItem Header="Select pic" IsEnabled="{Binding Path=ProductSelected}" />
<MenuItem Header="Paste pict" Name="miPaste" Click="miPaste_Click"/>
</ContextMenu>
</Border.ContextMenu>
<Image Stretch="Fill" Source="{Binding Path=Product.Picture}" />
</Border>
Run Code Online (Sandbox Code Playgroud)
我在'CS'中写这个:
private void ContextMenu_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
MessageBox.Show("OPPENING");
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,当我按下鼠标右键时,会出现上下文菜单,但从不显示MessageBox.
这可能非常简单,我没有看到它,因为这是漫长的一天的结束,如果它是我提前道歉.
我有一组按钮,右键单击时会弹出一个ContextMenu.该菜单有两个MenuItem,它们都分配了一个Click处理函数.我正在触发ContextMenu弹出右键单击按钮,如下所示:
过于简化的例子:
public void InitiailizeButtonContextMenu()
{
buttonContextMenu = new ContextMenu();
MenuItem foo = new MenuItem("foo");
foo.Click += OnFooClicked;
MenuItemCollection collection = new MenuItemCollection(buttonContextMenu);
collection.Add(foo);
}
public void OnButtonMouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
// left click stuff handling
if (e.Button == MouseButtons.Right)
buttonContextMenu.Show((Button)sender, new Point(e.X, e.Y));
}
public void OnFooClicked(object sender, EventArgs e)
{
// Need to get the Button the ContextMenu .Show'd on in
// OnButtonMouseClick... thoughts?
}
ContextMenu buttonContextMenu;
Run Code Online (Sandbox Code Playgroud)
我需要能够获得触发ContextMenu的Button在MenuItem的Click处理程序中弹出,或以某种方式获取它.MenuItem.Click接受EventArgs,所以没有什么用处.我可以将对象发送者强制转换回MenuItem,但我找不到任何告诉我是什么让它弹出的东西.这可能吗?
我有一个看起来像这样的上下文菜单
A
|--1
|--2
|--3
Run Code Online (Sandbox Code Playgroud)
在选择1 2或3之后,我需要访问调用上下文菜单的对象
这意味着如果这是textbox1的上下文菜单,那么我需要访问该对象,我该怎么做?
忘了提一下,这是一个WPF应用程序.所以我使用System.Windows.Controls和ContextMenu是以编程方式创建的
使用下面的示例代码(受此处影响很大),右键单击上下文菜单并未真正正确对齐.
从屏幕截图中可以看出,生成的菜单位于鼠标光标上方.我希望菜单的左上角与鼠标指针完全对齐.
有什么方法可以调整吗?
import re
import operator
import os
import sys
import sqlite3
import cookies
from PyQt4.QtCore import *
from PyQt4.QtGui import *
def main():
app = QApplication(sys.argv)
w = MyWindow()
w.show()
sys.exit(app.exec_())
class MyWindow(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
self.tabledata = [('apple', 'red', 'small'),
('apple', 'red', 'medium'),
('apple', 'green', 'small'),
('banana', 'yellow', 'large')]
self.header = ['fruit', 'color', 'size']
# create table
self.createTable()
# layout
layout = QVBoxLayout()
layout.addWidget(self.tv)
self.setLayout(layout)
def popup(self, pos):
for i in self.tv.selectionModel().selection().indexes():
print …
Run Code Online (Sandbox Code Playgroud) 作为标题,如何将修改应用于另一个页面,与背景不同?
表现:
{
"name": "First Extension",
"version": "1.0",
"description": "The first extensione tha I made",
"permissions":["contextMenus", "tabs", "http://localhost/CreativaIly/*"],
"background_page": "background_page.html",
"browser_action":{
"name": "My First Extension!",
"default_icon": "Chrome_icon32bn.png",
/*"default_popup": "popup.html",*/
"default_title": "My First Extension!"
},
"icons": {
"16": "Chrome_icon19color.png",
"48": "Chrome_icon32color.png",
"128": "Chrome_icon.png"
}
}
Run Code Online (Sandbox Code Playgroud)
背景页面:
<!doctype html>
<html>
<head>
<title>Background Page</title>
<script type="text/javascript" src="mootools-core-1.4.2-full-compat.js"></script>
<script src="script.js" type="text/javascript" ></script>
</head>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 长时间按住listview条目并显示各种选项后,我试图打开上下文菜单。但是,我无法长期持有任何东西。
这是我用来调用上下文菜单的代码:
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuItem delete = menu.add("delete");
MenuItem edit = menu.add("edit");
delete.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
return true;
}
});
edit.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
return true;
}
});
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过,但也无济于事:
@Override
public void onCreateContextMenu(ContextMenu menu,
View v, ContextMenuInfo menuInfo) {
menu.add(0, 1, 0, "Edit");
menu.add(0, 2, 1, "Rename");
menu.add(0, 3, 2, "Delete");
super.onCreateContextMenu(menu, v, menuInfo);
}
@Override
public boolean onContextItemSelected(MenuItem item) …
Run Code Online (Sandbox Code Playgroud)