블로그 이미지
Magic_kit
study 관련자료를 한곳으로 자기 개발 목적으로 재태크 재무 관리 목적으로 일상생활의 팁을 공유 하기 위하여 블로그를 개설 하였습니다.

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
반응형

Category

Recent Post

Recent Comment

Archive

2009. 12. 1. 12:22 .Net Project/SilverLight 3.0
반응형
  Drag&Drop 컨트롤
  Drag&Drop 컨트롤 사용 방법)


<
UserControl x:Class="RiaDragDrop.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d"

    d:DesignHeight="300" d:DesignWidth="400">

 

    <Canvas x:Name="lblName" Width="400" Height="300" Background="Silver">

        <TextBlock Name="txtDrag" Text="DrageDrop" FontSize="30"></TextBlock>

       

    </Canvas>   

</UserControl> 


 Drag&Drop. Cs

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;

 

namespace RiaDragDrop

{

    public partial class MainPage : UserControl

    {

        private bool isMouseDown = false; //마우스 클릭 중인지 확인

        private Point lastPoint = new Point(); //마지막 커서 위치

        private Point offset = new Point(); //왼쪽 상단과 개체의 간격 여백

 

        public MainPage()

        {

            InitializeComponent();

           

            //[1]Left Button

            this.txtDrag.MouseLeftButtonDown += new MouseButtonEventHandler
                                                (txtDrag_MouseLeftButtonDown);

 

            //[2]mouse Move

            this.txtDrag.MouseMove += new MouseEventHandler(txtDrag_MouseMove);

 

            ////left over

            this.txtDrag.MouseLeftButtonUp += new MouseButtonEventHandler
                                                  (txtDrag_MouseLeftButtonUp);  

        }

 

        //Mouse Over

        void txtDrag_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)

        {

            isMouseDown = false; //클릭되지 않은 상태            
                   this
.txtDrag.ReleaseMouseCapture(); //
캡쳐된 마우스 정보 해제

        }

 

        //Mouse Move

        void txtDrag_MouseMove(object sender, MouseEventArgs e)

        {

            if (isMouseDown) // 마우스 클릭상태에서만 드래그
            {

                lastPoint = e.GetPosition(null); //재 설정                

                //TextBlockC Left 속성 재지정

                txtDrag.SetValue(Canvas.LeftProperty, lastPoint.X - offset.X);

                txtDrag.SetValue(Canvas.TopProperty, lastPoint.Y - offset.Y);

            }

        }

 

        //Mouse Down

        void txtDrag_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)

        {

            isMouseDown = true; //클릭된 상태
            this.txtDrag.CaptureMouse(); //현재 요소의 마우스
                                                                            클릭시 마우스에 대한 정보 저장  

            lastPoint = e.GetPosition(null);
            //
마우스 위치 반환
            //MessageBox.Show(lastPoint.X.ToString());

            offset.X = lastPoint.X - Convert.ToDouble
                        (txtDrag.GetValue(Canvas.LeftProperty));

            offset.Y = lastPoint.Y - Convert.ToDouble
                        (txtDrag.GetValue(Canvas.TopProperty));

        }

    }

}




반응형

'.Net Project > SilverLight 3.0' 카테고리의 다른 글

47장 RoutedEventArgs 컨트롤  (0) 2009.12.01
46장 InkPresenter 컨트롤  (0) 2009.12.01
42장) ScrollViewer 컨트롤  (0) 2009.12.01
41장) ToolTip 컨트롤  (0) 2009.12.01
40장) 다시 보는 Canvas 예제 (복습)  (0) 2009.12.01
posted by Magic_kit