我们在自助服务终端类型场景中使用silverlight。有没有办法禁用右键单击功能进入silverlight配置对话框?
答案 0 :(得分:8)
//在SharePoint中我添加了一个小代码,告诉SP在加载每个部分后运行脚本。像魅力一样工作:)
//编辑
或者更好的是,silverlight论坛建议你这样做: Silverlight Forum
<div id="silverlightObjDiv">
<!-- silverlight object here -->
</div>
<script>
_spBodyOnLoadFunctionNames.push ('setupElement');
function setupElement ()
{
document.getElementById('silverlightObjDiv').oncontextmenu = disableRightClick;
}
function disableRightClick(e) {
if (!e) e = window.event;
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
}
}
</script>
答案 1 :(得分:4)
正如Dain所说,在Silverlight 4中你可以轻松地做到这一点:
让控件无窗口:
<param name="windowless" value="true" />
在根网格/布局控件中右键单击:
public MainPage()
{
LayoutRoot.MouseRightButtonDown += (s, e) => { e.Handled = true; };
}
抓住
在Firefox和Chrome中,您必须选择具有鼠标滚动功能的上下文菜单或。可悲的是,你不能同时拥有两者,希望这会在Silverlight 5中发生变化。
答案 2 :(得分:2)
在Silverlight 4中,您可以使用C#进行操作,而无需摆弄和依赖任何HTML。
下面的示例显示了如何实现控件实际使用的右键单击,但如果您只想禁用,则可以创建一个Clicktrap。
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
// wire up the event handlers for the event on a particular UIElement
ChangingRectangle.MouseRightButtonDown += new MouseButtonEventHandler(RectangleContextDown);
ChangingRectangle.MouseRightButtonUp += new MouseButtonEventHandler(RectangleContextUp);
}
void RectangleContextUp(object sender, MouseButtonEventArgs e)
{
// create custom context menu control and show it.
ColorChangeContextMenu contextMenu = new ColorChangeContextMenu(ChangingRectangle);
contextMenu.Show(e.GetPosition(LayoutRoot));
}
void RectangleContextDown(object sender, MouseButtonEventArgs e)
{
// handle the event so the default context menu is hidden
e.Handled = true;
}
}