<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一步一步學Silverlight 2系列(4):鼠標事件處理

      概述

      Silverlight 2 Beta 1版本發(fā)布了,無論從Runtime還是Tools都給我們帶來了很多的驚喜,如支持框架語言Visual Basic, Visual C#, IronRuby, Ironpython,對JSON、Web Service、WCF以及Sockets的支持等一系列新的特性。《一步一步學Silverlight 2系列》文章帶您快速進入Silverlight 2開發(fā)。

      本文為系列文章第四篇,學習Silverlight 2中的鼠標事件處理,支持的鼠標事件包括MouseMove 、MouseEnter 、MouseLeave 、MouseLeftButtonDown、MouseLeftButtonUp。

      聲明事件

      對于鼠標事件我們可以附加到任何Silverlight對象上面,如下面的XAML聲明,為兩個圓形添加上MouseEnter和MouseLeave事件:

      <Canvas Background="#46461F">
          <Ellipse Width="120" Height="120" Fill="Orange"
                   Canvas.Top="60" Canvas.Left="80"
                   MouseEnter="OnMouseEnter"
                   MouseLeave="OnMouseLeave"/>
          
          <Ellipse Width="120" Height="120" Fill="Orange"
                   Canvas.Top="60" Canvas.Left="280"
                   MouseEnter="OnMouseEnter"
                   MouseLeave="OnMouseLeave"/>
      </Canvas>

      編寫事件處理程序,鼠標放上去時和鼠標移開時分別改變圓形的填充色:

      void OnMouseEnter(object sender, MouseEventArgs e)
      {
          Ellipse ell = sender as Ellipse;
          ell.Fill = new SolidColorBrush(Colors.Yellow);
      }
      void OnMouseLeave(object sender, MouseEventArgs e)
      {
          Ellipse ell = sender as Ellipse;
          ell.Fill = new SolidColorBrush(Colors.Green);
      }

      運行后效果如下:

      TerryLee_Silverlight2_0030

      分別在兩個圓形上放上鼠標并移開后如下所示:

      TerryLee_Silverlight2_0031

      使用代碼管理事件

      除了在XAML中聲明事件外,也可以直接使用代碼來注冊事件,簡單的修改一下上面的XAML文件,去掉事件的聲明并為兩個圓形分別加上Name:

      <Canvas Background="#46461F">
          <Ellipse x:Name="ellipse1" Width="120" Height="120" Fill="Orange"
                   Canvas.Top="60" Canvas.Left="80"/>
          
          <Ellipse x:Name="ellipse2" Width="120" Height="120" Fill="Orange"
                   Canvas.Top="60" Canvas.Left="280"/>
      </Canvas>

      在代碼中進行事件注冊:

      public partial class Page : UserControl
      {
          public Page()
          {
              InitializeComponent();
              ellipse1.MouseEnter += new MouseEventHandler(OnMouseEnter);
              ellipse1.MouseLeave += new MouseEventHandler(OnMouseLeave);
              ellipse2.MouseEnter += new MouseEventHandler(OnMouseEnter);
              ellipse2.MouseLeave += new MouseEventHandler(OnMouseLeave);
          }
      
          void OnMouseEnter(object sender, MouseEventArgs e)
          {
              Ellipse ell = sender as Ellipse;
              ell.Fill = new SolidColorBrush(Colors.Yellow);
          }
          void OnMouseLeave(object sender, MouseEventArgs e)
          {
              Ellipse ell = sender as Ellipse;
              ell.Fill = new SolidColorBrush(Colors.Green);
          }
      }

      運行后可以看到跟上面一樣的效果:

      TerryLee_Silverlight2_0031

      事件數(shù)據(jù)

      所有的鼠標事件都使用MouseButtonEventArgs和MouseEventArgs作為事件數(shù)據(jù),通過這兩個參數(shù)可以獲取相關事件數(shù)據(jù),使用GetPosition方法或者Source、Handled屬性。如下面的XAML聲明:

      <Canvas Background="#46461F">
          <Rectangle Fill="Orange" Stroke="White" StrokeThickness="2"
                     Canvas.Top="40" Canvas.Left="130"
                     Width="240" Height="120"
                     MouseMove="Rectangle_MouseMove"/>
          <TextBlock x:Name="Status" Foreground="White" Text="Status" 
                     Canvas.Left="100" Canvas.Top="200"/>
      </Canvas>

      為矩形添加MouseMove事件處理,在鼠標移動時我們獲取當前坐標位置,并顯示出來:

      private void Rectangle_MouseMove(object sender, MouseEventArgs e)
      {
          Point p = e.GetPosition(e.Source as FrameworkElement);
          Status.Text = String.Format("坐標位置({0}:{1})",p.X,p.Y);
      }

      運行后在矩形中移動鼠標,效果如下:

      TerryLee_Silverlight2_0032

      路由事件

      在Silverlight中,提供了事件路由,使得我們可以在父節(jié)點上接收和處理來自于子節(jié)點的事件,Silverlight中的路由事件采用了冒泡路由策略。在鼠標事件中MouseLeftButtonDown 、MouseLeftButtonUp 、MouseMove三個事件都支持路由事件,而MouseEnter、MouseLeave兩個事件不支持。下面的XAML中我們?yōu)镃anvas對象聲明了一個MouseLeftButtonDown事件:

      <Canvas x:Name="ParentCanvas" Background="#46461F" 
              MouseLeftButtonDown="ParentCanvas_MouseLeftButtonDown">
          <Rectangle x:Name="RecA" Fill="Orange" Stroke="White" StrokeThickness="2"
                     Canvas.Top="40" Canvas.Left="60"
                     Width="160" Height="100"/>
          <Rectangle x:Name="RecB" Fill="LightBlue" Stroke="White" StrokeThickness="2"
                     Canvas.Top="40" Canvas.Left="240"
                     Width="160" Height="100"/>
          <TextBlock x:Name="Status" Foreground="White" Text="Status" 
                     Canvas.Left="100" Canvas.Top="200"/>
      </Canvas>

      添加MouseLeftButtonDown事件處理程序,顯示當前鼠標按下時的坐標,并顯示源控件名稱:

      private void ParentCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
      {
          String msg = "x:y = " + e.GetPosition(sender as FrameworkElement).ToString();
          msg += " from " + (e.Source as FrameworkElement).Name;
          Status.Text = msg;
      }

      運行后在RecA上按下鼠標:

      TerryLee_Silverlight2_0033

      在Canvas上按下鼠標:

      TerryLee_Silverlight2_0034

      結(jié)束語

      本文簡單介紹了Silverlight 2中關于鼠標事件處理的一些知識,包括事件注冊、獲取事件數(shù)據(jù)、路由事件等。在下一篇中,我們將使用這些鼠標事件來實現(xiàn)一個簡單的拖放功能。

      下一篇:一步一步學Silverlight 2系列(5):實現(xiàn)簡單的拖放功能

      posted @ 2008-03-07 23:46  TerryLee  閱讀(34191)  評論(39)    收藏  舉報
      主站蜘蛛池模板: 亚洲日韩性欧美中文字幕| 午夜免费无码福利视频麻豆| 无遮无挡爽爽免费视频| 无套内谢少妇一二三四| 中文成人无字幕乱码精品区| 亚洲成在人线av无码| 亚洲深深色噜噜狠狠网站| 久热久视频免费在线观看| 国产一区二区三区精品综合| 亚洲熟妇在线视频观看| 国产自产对白一区| 亚洲 卡通 欧美 制服 中文| 徐州市| 国产主播精品福利午夜二区| 男女爽爽无遮挡午夜视频| 日韩丝袜亚洲国产欧美一区| 国产95在线 | 欧美| 日韩人妻av一区二区三区| 久久不见久久见免费视频观看| 国产午夜精品福利视频| 亚洲精品乱码久久观看网| 人妻丝袜中文无码av影音先锋 | 区。| 热久久这里只有精品国产| 国产又色又爽又黄的在线观看| 果冻传媒mv免费播放在线观看| 国产成人亚洲精品狼色在线| 国产精品一区 在线播放| 麻豆人人妻人人妻人人片av| 尤物国精品午夜福利视频| 69天堂人成无码免费视频| 亚洲午夜福利精品无码不卡| 久久综合九色综合97婷婷| 国产一区二区三区在线观看免费| 国产一区二区三区的视频| 各种少妇wbb撒尿| 97香蕉碰碰人妻国产欧美| 免费观看国产女人高潮视频| 亚洲国产成人综合精品| 山西省| 精品人妻蜜臀一区二区三区|