路由事件(鼠标拖放)

路由事件(鼠标拖放)

开发工具与关键技术:Visual Studio 2017、WPF
撰写时间: 2019年7月12日

WPF中的拖放操作的方法和事件被集中到System.Windows.DragDrop.
拖放操作通过下面三个步骤进行:
(1)用于单击一个元素,并保持鼠标键为按下状态。这是信息被搁置起来,并且拖放操作开始。
(2)用户将鼠标移动到其他元素上,如果该元素可以接受正在拖动的内容,鼠标指针会变成拖放图标。否则鼠标指针会变成一个禁止的图标。
(3)当用户释放鼠标时,元素接受信息并决定如何处理接受到的信息,在没有释放鼠标时,可以通过按下Esc键取消操作。
用XAML代码实现:

<Windowx:Class="Wpf1.Window11"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Title="Window11" Height="450"Width="800">
     <Grid Margin="5">
         <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
         </Grid.RowDefinitions>
         <Grid.ColumnDefinitions>
             <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
         </Grid.ColumnDefinitions>
         <TextBox Padding="10"VerticalAlignment="Center" HorizontalAlignment="Center">拖动内容</TextBox>
         <Label Grid.Column="1" Padding="30"Background="LightBlue" VerticalAlignment="Center"
               HorizontalAlignment="Center"MouseDown="lblSource_MouseDown">不接受拖动内容</Label>
         <Label Grid.Row="1"Grid.ColumnSpan="2" HorizontalAlignment="Center"Padding="20"
                 AllowDrop="True"Drop="lblTarget_Drop">拖动到这</Label>
     </Grid>
</Window>

后台代码:

private voidlblSource_MouseDown(object sender, MouseButtonEventArgs e)
{
Label lbl = (Label)sender;
DragDrop.DoDragDrop(lbl, lbl.Content, DragDropEffects.Copy);
}
private void lblTarget_Drop(object sender, DragEventArgs e)
{
((Label)sender).Content = e.Data.GetData(DataFormats.Text);
}

效果显示可去VS中查看详情。实现图如下:在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值