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

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

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

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

      概述

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

      本文為系列文章第五篇,利用前面講過的鼠標事件處理實現簡單的拖放功能。

      準備XAML

      在實現拖放功能中,分為三個步驟:

      1.按下鼠標,觸發MouseLeftButtonDown事件,選擇要拖動的對象。

      2.移動鼠標,觸發MouseMove事件,移動選擇的對象。

      3.放開鼠標,觸發MouseLeftButtonUp事件,停止捕捉事件。

      做一個簡單的界面,用一個按鈕來顯示拖放,如下XAML聲明:

      <Canvas Background="#46461F">
          <Button 
             MouseLeftButtonDown="OnMouseDown" 
             MouseMove="OnMouseMove"
             MouseLeftButtonUp="OnMouseUp" 
             Canvas.Left="50" Canvas.Top="50" Background="Red"
             FontSize="18"
             Width="160" Height="80">
              <Button.Content>
                  <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"
                              VerticalAlignment="Center">
                      <Image Source="smile_6.png"></Image>
                      <TextBlock Text="拖動我" VerticalAlignment="Center" Margin="10"></TextBlock>
                  </StackPanel>
              </Button.Content>
          </Button>
      </Canvas>

      這里為了界面顯示效果,使用了控件模板,后續會專門講到。

      開始拖放操作

      開始拖放操作,實現MouseLeftButtonDown事件處理程序,用兩個全局變量來記錄當前鼠標的位置和鼠標是否保持移動。

      bool trackingMouseMove = false;
      Point mousePosition;
      
      void OnMouseDown(object sender, MouseButtonEventArgs e)
      {
          FrameworkElement element = sender as FrameworkElement;
          mousePosition = e.GetPosition(null);
          trackingMouseMove = true;
          if (null != element)
          {
              element.CaptureMouse();
              element.Cursor = Cursors.Hand;
          }
      }

      移動對象

      移動對象,實現MouseMove事件處理程序,計算元素的位置并更新,同時更新鼠標的位置。

      void OnMouseMove(object sender, MouseEventArgs e)
      {
          FrameworkElement element = sender as FrameworkElement;
          if (trackingMouseMove)
          {
              double deltaV = e.GetPosition(null).Y - mousePosition.Y;
              double deltaH = e.GetPosition(null).X - mousePosition.X;
              double newTop = deltaV + (double)element.GetValue(Canvas.TopProperty);
              double newLeft = deltaH + (double)element.GetValue(Canvas.LeftProperty);
      
              element.SetValue(Canvas.TopProperty, newTop);
              element.SetValue(Canvas.LeftProperty, newLeft);
      
              mousePosition = e.GetPosition(null);
          }
      }

      完成拖放操作

      完成拖放操作,實現MouseLeftButtonUp事件處理程序。

      void OnMouseUp(object sender, MouseButtonEventArgs e)
      {
          FrameworkElement element = sender as FrameworkElement;
          trackingMouseMove = false;
          element.ReleaseMouseCapture();
      
          mousePosition.X = mousePosition.Y = 0;
          element.Cursor = null;
      }

      效果顯示

      最終,完成后的效果如下

      TerryLee_Silverlight2_0035

      拖動按鈕

      TerryLee_Silverlight2_0036

      結束語

      本文實現了一個簡單的拖放功能(示例來自于Silverlight 2 SDK),點擊下載文本示例代碼。

      下一篇:一步一步學Silverlight 2系列(6):鍵盤事件處理

      posted @ 2008-03-08 00:40  TerryLee  閱讀(31821)  評論(94)    收藏  舉報
      主站蜘蛛池模板: 国产中文字幕精品视频| 在熟睡夫面前侵犯我在线播放| 国产一级片内射在线视频| 麻豆国产成人AV在线播放| 在线高清免费不卡全码| 丰满人妻熟妇乱又伦精品软件| 久久天堂无码av网站| 亚洲国产精品男人的天堂| 亚洲红杏AV无码专区首页| 精品无码av无码专区| 成人毛片100免费观看| 国产性三级高清在线观看| 夜色福利站WWW国产在线视频| 亚洲日本欧洲二区精品| 欧美z0zo人禽交另类视频| 美乳丰满人妻无码视频| 屯门区| 亚洲精品综合一区二区三区| 亚洲 日本 欧洲 欧美 视频| 乱女乱妇熟女熟妇综合网| 一本加勒比hezyo无码人妻| 丝袜美腿诱惑之亚洲综合网 | 亚洲精品综合网二三区| 国产一级片内射在线视频| 精品无码一区二区三区电影| 安顺市| 人妻少妇偷人无码视频| 国产乱码日产乱码精品精| 亚洲区福利视频免费看| 麻豆一区二区中文字幕| 国产无遮挡免费视频免费| 香蕉EEWW99国产精选免费| 久久er热在这里只有精品66 | 日韩东京热一区二区三区| 婷婷国产亚洲性色av网站| 在线a亚洲老鸭窝天堂| 色老99久久精品偷偷鲁| 秋霞在线观看秋| 在线中文一区字幕对白| 夜夜躁日日躁狠狠久久av| 日产国产一区二区不卡|