zoukankan      html  css  js  c++  java
  • 如何在silverlihgt中使用右键

    一般我们在silverlight中点击右键会出现如下的对话筐.



    在flash中 其提供了一个可定制话的右键菜单系统.(ContextMenu)

    这个在silverlight中也是一样可以做到的.

    过程如下:

    1.添加一个<TextBlock>到Page.xaml中
    <UserControl x:Class="rightClick.Page"
        xmlns
    ="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x
    ="http://schemas.microsoft.com/winfx/2006/xaml" 
        Width
    ="400" Height="300">
        
    <Grid x:Name="LayoutRoot" Background="White">
            
    <TextBlock x:Name="MyField">Right click please.</TextBlock>
       
    </Grid>
    </UserControl>
    2.在页面中设置silverlight的参数Windowless="true"
            <asp:Silverlight ID="Silverlight1" runat="server" Height="480px" 
                MinimumVersion
    ="2.0.30523" Source="~/ClientBin/rightClick.xap" Windowless="true" Width="640px" />
            <object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="100%" height="100%">
                
    <param name="source" value="ClientBin/rightClick.xap"/>
                
    <param name="onerror" value="onSilverlightError" />
                
    <param name="background" value="white" />
                
    <param name="Windowless" value="true" />
                
    <href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;">
                     
    <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/>
                
    </a>
            
    </object>

    3.最后修改Page.xaml.cs页面的代码
    • 新建立一个ContextMenuInterceptor类.这个类是用来处理页面中“OnContextMenu”事件的.在用到HTMLPage对象你需要引入System.Window.Browser命名空间.
    • 在调用e.PeventDefault()方法后,将会取消右键点击事件.所以silverlight不会捕捉到它.
    • 在这里我们已经成功的拦截了右键点击事件,做我们想做的任何事情了.;)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Windows.Browser;

    namespace rightClick
    {
        
    public partial class Page : UserControl
        
    {
            ContextMenuInterceptor _cmi 
    = null;
            
    public Page()
            
    {
                InitializeComponent();
                _cmi 
    = new ContextMenuInterceptor(MyField);
            }


        }



        
    public class ContextMenuInterceptor
        
    {
            TextBlock TextField;

            
    public ContextMenuInterceptor(TextBlock textField)
            
    {
                TextField 
    = textField;
                HtmlPage.Document.AttachEvent(
    "oncontextmenu"this.OnContextMenu);
            }


            
    private void OnContextMenu(object sender, HtmlEventArgs e)
            
    {
                TextField.Text 
    = "Right Clicked Blocked at " + e.OffsetX + "," + e.OffsetY;

                
    //Cancels the event if it is cancelable.
                e.PreventDefault();
            }

        }

    }


    原文地址:http://silverlight.net/blogs/msnow/archive/2008/07/01/tip-of-the-day-14-how-to-right-click-on-a-silverlight-application.aspx
  • 相关阅读:
    5.4 省选模拟赛 修改 线段树优化dp 线段树上二分
    一本通 高手训练 1782 分层图 状压dp
    luogu P3830 [SHOI2012]随机树 期望 dp
    5.2 省选模拟赛 或许 线型基
    luogu P4562 [JXOI2018]游戏 组合数学
    一本通 高手训练 1781 死亡之树 状态压缩dp
    luogu P4726 【模板】多项式指数函数 多项式 exp 牛顿迭代 泰勒展开
    4.28 省选模拟赛 负环 倍增 矩阵乘法 dp
    HDU 1756 Cupid's Arrow 计算几何 判断一个点是否在多边形内
    一本通 高手训练 1763 简单树 可持久化线段树 树链刨分 标记永久化
  • 原文地址:https://www.cnblogs.com/nasa/p/1233870.html
Copyright © 2011-2022 走看看