Отключить правый клик в Silverlight - PullRequest
8 голосов
/ 10 февраля 2009

Мы используем silverlight в сценарии типа киоска. Есть ли способ отключить возможность щелчка правой кнопкой мыши, чтобы войти в диалог настройки silverlight?

Ответы [ 3 ]

8 голосов
/ 10 февраля 2009

// в SharePoint я добавил небольшой код, чтобы сказать SP запускать сценарий после загрузки каждой части. Работает как шарм:)

// РЕДАКТИРОВАТЬ

или лучше, но форум Silverlight рекомендует вам сделать это: Форум Silverlight

<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>
4 голосов
/ 10 августа 2010

Как упоминал Дейн, в Silverlight 4 вы можете сделать это легко:

Сделать управление без окон:

<param name="windowless" value="true" />

Ловушка правой кнопкой мыши в корневой сетке / элементе управления макетом:

public MainPage()
{
    LayoutRoot.MouseRightButtonDown += (s, e) => { e.Handled = true; };
}

Улов
В Firefox и Chrome вам нужно выбрать контекстное меню или с возможностью прокрутки колесиком мыши. К сожалению, вы не можете иметь оба, надеюсь, это изменится в Silverlight 5.

2 голосов
/ 10 августа 2010

В 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...