在Silverlight中禁用右键单击

时间:2009-02-10 16:20:08

标签: .net silverlight

我们在自助服务终端类型场景中使用silverlight。有没有办法禁用右键单击功能进入silverlight配置对话框?

3 个答案:

答案 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;
     }
 }

参考:http://timheuer.com/blog/archive/2009/11/18/whats-new-in-silverlight-4-complete-guide-new-features.aspx#rightclick