专注ASP.NET和SQLServer2008 BI&GIS

骂别人不革命,便是革命者,则自己不做事,而骂别人的事做得不好,自然便是更做事者。
若与此辈理论,可以被牵连到白费唇舌,一事无成,也就是白活一世,于己于人,都无益处。
我现在得了妙法,是谣言不辩,诬蔑不洗,只管自己做事。——鲁迅1934年6月21日信
posts - 292, comments - 1422, trackbacks - 36, articles - 6
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2008年11月21日

public partial class Page : UserControl

{
bool isDragDropInEffect = false;
Point pos;
 
public Page()
{
    InitializeComponent();
    // Loop through all the UIElements in the Canvas  
    // and attach Mouse Event Handlers to the Element
    foreach (UIElement uiEle in CanvasParent.Children)
    {
        uiEle.MouseMove += new MouseEventHandler(Element_MouseMove);
        uiEle.MouseLeftButtonDown += new MouseButtonEventHandler(Element_MouseLeftButtonDown);
        uiEle.MouseLeftButtonUp += new MouseButtonEventHandler(Element_MouseLeftButtonUp);
    }
}
 
void Element_MouseMove(object sender, MouseEventArgs e)
{
    if (isDragDropInEffect)
    {
        FrameworkElement currEle = sender as FrameworkElement;
        // Retrieving the item's current x and y position
        double xPos = e.GetPosition(null).X - pos.X;
        double yPos = e.GetPosition(null).Y - pos.Y;
 
        // Re-position Element
        currEle.SetValue(Canvas.TopProperty, yPos + (double)currEle.GetValue(Canvas.TopProperty));
        currEle.SetValue(Canvas.LeftProperty, xPos + (double)currEle.GetValue(Canvas.LeftProperty));
 
        // Reset the new position value
        pos = e.GetPosition(null);
    }
}
 
 
void Element_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    FrameworkElement fEle = sender as FrameworkElement;
    isDragDropInEffect = true;
    // x and y coords of mouse pointer position
    pos = e.GetPosition(null);  
    // Enable mouse capture on element
    fEle.CaptureMouse();
    // Set the cursor to 'Hand' when mouse pointer is over element
    fEle.Cursor = Cursors.Hand;
}
 
 
void Element_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
    if (isDragDropInEffect)
    {
        FrameworkElement ele = sender as FrameworkElement;
        isDragDropInEffect = false;
        // Removes Mouse Capture from Element being dragged
        ele.ReleaseMouseCapture();
    }
}
 

}

 

这段代码把CanvasContent里的元素都变成可拖拽的.

posted @ 2008-11-21 13:40 aspnetx 阅读(232) | 评论 (0)编辑