如何捕捉Silverlight右键点击事件

可能有的朋友正在想如何用Silverlight实现右键菜单栏,那么这篇文章可能会对你有很大帮助~

上次说要给大家晒晒在Silverlight中捕捉鼠标右键的方法.

这里还会用我们常见的对象HtmlPage(System.Windows.Browser;)

在这个对象下有一个Document属性,这个属性中的方法相信大家都有点儿了解了吧 上次讲Cookie的时候也用到了他.

这次捕获鼠标右键的工作也要交给他了~

呵呵 还是先给大家share下代码吧'

首先要把我们Silverlight控件的windowless属性设置为true.

<asp:Silverlight ID="Xaml1" Windowless="true" runat="server" Source="~/ClientBin/SilverlightApplication1.xap" MinimumVersion="2.0.30523" Width="100%" Height="100%" />

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

 

<UserControl x:Class="RightClick_Silverlight.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>

其实捕获鼠标的原理很简单 就是在pageload的时候给你的控件添加一个捕获事件

用的就是我们之前所说的HtmlPage对象

 

public Page()
{
    HtmlPage.Document.AttachEvent(
"oncontextmenu"this.OnContextMenu);
}

private void OnContextMenu(object sender, HtmlEventArgs e)
{
        
string X = e.OffsetX;
        
string y = e.OffsetY;
        e.PreventDefault();
 }

 

相信看到这里大家都明白了吧~ 这里都是我搜集来的小技巧希望对大家有所帮助~

Source code: MouseRightClick

Tag标签: Silverlight
0
0
(请您对文章做出评价)
« 上一篇:在Silverlight中如何获取图片的宽高
» 下一篇:silverlight技巧 用xamlreader读写XAML页面.
posted @ 2008-07-30 13:46 王博-sonic 阅读(2271) 评论(12)  编辑 收藏 所属分类: Silverlight

  回复  引用    
#1楼2008-07-30 15:08 | panboxian[未注册用户]
好,
真需要呢 谢谢

  回复  引用  查看    
#2楼2008-07-30 16:00 | Windie Chai(笑煞天)      
学习!
  回复  引用    
#3楼2008-07-31 09:15 | grs[未注册用户]
我改成vb.net,以下代码是在一个 UserControl里的。没有触发,什么也没改变,什么原因?

Public Sub New()
InitializeComponent()

HtmlPage.Document.AttachEvent("oncontextmenu", New EventHandler(AddressOf OnRightClick))

End Sub
Private Sub OnRightClick(ByVal sender As Object, ByVal e As HtmlEventArgs)
Dim X As String = e.OffsetX
Dim y As String = e.OffsetY
tbmsg.Text = X & "," & y
e.PreventDefault()
End Sub


  回复  引用  查看    
#4楼[楼主]2008-07-31 10:24 | 王博-sonic      
@grs



谢谢你的提醒 之前忘记说了 要设置控件的 windowless 属性.

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

或者ASP控件

Windowless="true"


  回复  引用    
#5楼2008-08-02 10:01 | grs[未注册用户]
<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/Pssl.xap" EnableFrameRateCounter="false" Windowless="true" Version="2.0" Width="100%" Height="100%" />

还是不行,一点反应都没有 ,楼主可否把你的工程发给我学习学习。是否我还漏了什么东西

  回复  引用    
#6楼2008-08-02 10:02 | grs[未注册用户]
我的email : cgdou@126.com
  回复  引用  查看    
#7楼[楼主]2008-08-02 10:46 | 王博-sonic      
--引用--------------------------------------------------
grs: 我的email : cgdou@126.com
--------------------------------------------------------
本文新加下载链接

cgdou@126.com 已发送
请查收~

  回复  引用  查看    
#8楼2008-08-08 13:07 | JerryShi      
哥们挺受欢迎!
  回复  引用  查看    
#9楼2008-09-04 16:01 | t-mac.NET      
调用 e.PreventDefault(); 就可以将SilverLight中默认的菜单给屏避了,,但在firefox中无效。。。

  回复  引用  查看    
#10楼2009-09-27 23:52 | 王书奎(网名:无忌)      
能给源码吗
  回复  引用  查看    
#11楼2009-09-27 23:52 | 王书奎(网名:无忌)      
我转载了 我的正好缺少这个功能
  回复  引用  查看    
#12楼[楼主]2009-09-28 14:13 | 王博-sonic      
引用王书奎(网名:无忌):能给源码吗

hi~ 书奎
上面有源码的下载~ 你下来就好了~