wpf拖拽
简单拖拽的实现是,实现源控件的MouseDown事件,和目标控件Drop事件。调用DragDrop.DoDragDrop()以启动拖放操作,DragDrop.DoDragDrop()函数接受三个参数:dragSource、data以及allowedEffects。特别需要注意的 是dragSource参数。该参数标示了拖拽操作的消息源,也决定了所有的消息源事件由谁发出。参数data则用来包装Drag&Drop所操 作的数据。一般情况下,其都是一个DataObject类型的实例。该实例内部应包装拖拽所实际操作的数据。最后,allowedEffects可以用来 指定拖拽操作的效果。调用该函数的片断可以如下所示:
DragDrop.DoDragDrop(mListBox, dataObject, DragDropEffects.Copy);
例子1:从groupBox中拖动TextBlock控件到右侧Listbox中
![](data:image/png;base64,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)
xmal:
<Grid> <ListBox x:Name="listBox" Drop="listBox_Drop" HorizontalAlignment="Left" Height="190" Margin="285,10,0,0" VerticalAlignment="Top" Width="159" AllowDrop="True"/> <GroupBox x:Name="groupBox" Header="GroupBox" MouseDown="TextBlock_MouseDown" HorizontalAlignment="Left" Margin="23,10,0,0" VerticalAlignment="Top" Height="190" Width="247"> <StackPanel Margin="10"> <TextBlock Margin="10" >足球</TextBlock> <TextBlock Margin="10">篮球</TextBlock> <TextBlock Margin="10">羽毛球</TextBlock> <TextBlock Margin="10">乒乓球</TextBlock> </StackPanel> </GroupBox> </Grid>
C#
private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e) { TextBlock obj = (TextBlock)e.OriginalSource; DragDrop.DoDragDrop(obj, obj.Text, DragDropEffects.Copy); } private void listBox_Drop(object sender, DragEventArgs e) { string data = e.Data.GetData(DataFormats.Text).ToString(); listBox.Items.Add(data); }
代码不难,自己应该可以看懂,这里不解释了.
例子2:从外部拖拽一个文件夹到窗体彩色框处,将显示文件夹地址和文件夹下所有文件信息
代码如下:
<Grid Drop="textBox_Drop"> <TextBlock x:Name="textBlock" Text="文件夹:" HorizontalAlignment="Left" Margin="10,35,0,0" TextWrapping="Wrap" VerticalAlignment="Top"/> <ListBox x:Name="listBox" HorizontalAlignment="Left" Height="176" Margin="10,100,0,0" VerticalAlignment="Top" Width="391"/> <TextBlock x:Name="textBlock1" HorizontalAlignment="Left" Margin="10,72,0,0" TextWrapping="Wrap" Text="文件夹下文件:" VerticalAlignment="Top"/> <TextBlock x:Name="textBlock2" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="请拖动文件夹到彩色框中" VerticalAlignment="Top"/> <TextBlock x:Name="txtfloder" HorizontalAlignment="Left" Margin="63,31,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="328" Background="#FFCEDA41" Height="34"/> </Grid>
private void textBox_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { listBox.Items.Clear(); string floder = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); if (Directory.Exists(floder)) { txtfloder.Text = floder.ToString(); foreach (var item in Directory.GetFiles(floder)) { listBox.Items.Add(item); } } else txtfloder.Text = "无效文件夹"; } }
例子3:把园从左拖动到右侧
![](data:image/png;base64,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)
<Grid>
<Canvas Name="canvas1" HorizontalAlignment="Left" Height="259" Margin="10,10,0,0" VerticalAlignment="Top" Width="228" Background="#FFEBEABC">
<Ellipse Name="ell" PreviewMouseDown="ell_PreviewMouseMove" PreviewMouseMove="ell_PreviewMouseMove" Fill="#FF9595E5" Height="100" Canvas.Left="28" Stroke="Black" Canvas.Top="23" Width="100"/>
</Canvas>
<Canvas Name="canvas2" Drop="c2_Drop" DragOver="canvas2_DragOver" HorizontalAlignment="Left" Height="259" Margin="256,10,0,0" VerticalAlignment="Top" Width="214" Background="#FFEDE2E2" AllowDrop="True"/>
</Grid>
private void ell_PreviewMouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DataObject obj = new DataObject(typeof(Ellipse), ell);
DragDrop.DoDragDrop(this.ell, obj, DragDropEffects.Move);
}
}
private void c2_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(Ellipse)))
{
Ellipse obj = e.Data.GetData(typeof(Ellipse)) as Ellipse;
canvas1.Children.Remove(obj);
canvas2.Children.Add(obj);
}
}
private void canvas2_DragOver(object sender, DragEventArgs e)
{
if (!e.Data.GetDataPresent(typeof(Ellipse)))
{
e.Effects = DragDropEffects.None;
e.Handled = true;
}
}
这里的事件 PreviewMouseDown="ell_PreviewMouseMove" PreviewMouseMove="ell_PreviewMouseMove" ,可以只写其中一个即可。
详细查看msdn:https://msdn.microsoft.com/zh-cn/library/hh144799%28v=vs.110%29.aspx