WPF控件拖放到WinForm控件
在做WPF程序时通过WindowsFormsHost嵌入了一个WinForm控件。现在想实现从WPF控件中拖放数据到WinForm控件,但是在WinForm控件的DragDrop里无法获取到数据(数据为自定义对象,若为string是可以的)。
下面是自己做的一个Demo,当拖放椭圆(wpf控件)到Label(winform控件)时,将会弹出"拖放数据无效"的对话框
后台逻辑:
界面XAML:
下面是自己做的一个Demo,当拖放椭圆(wpf控件)到Label(winform控件)时,将会弹出"拖放数据无效"的对话框
后台逻辑:
private void ellipse1_MouseMove(object sender, MouseEventArgs e)
{
DataObject data = new DataObject(System.Windows.Forms.DataFormats.FileDrop, new Test());
DragDrop.DoDragDrop(ellipse1, data, DragDropEffects.Move);
}
private void Label_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
if (!e.Data.GetDataPresent(System.Windows.Forms.DataFormats.FileDrop))
{
MessageBox.Show("没数据");
return;
}
var data = e.Data.GetData(System.Windows.Forms.DataFormats.FileDrop);
if (data != null)
{
MessageBox.Show(data.ToString());
}
else
{
MessageBox.Show("拖放数据无效");
}
}
private void Label_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
{
e.Effect = System.Windows.Forms.DragDropEffects.Move;
}
}
[Serializable]
public class Test
{
public override string ToString()
{
return "Test数据";
}
}
界面XAML:
<Grid>
<WindowsFormsHost Height="100" HorizontalAlignment="Left" Margin="10,10,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="200" Background="Azure">
<winform:Label DragEnter="Label_DragEnter" DragDrop="Label_DragDrop" Text="Hello" AllowDrop="True"></winform:Label>
</WindowsFormsHost>
<Ellipse Height="100" Stroke="AliceBlue" StrokeThickness="50" HorizontalAlignment="Left" Margin="10,120,0,0" Name="ellipse1" VerticalAlignment="Top" Width="200" MouseMove="ellipse1_MouseMove" />
</Grid>
...全文
相关推荐
Winform窗体嵌入WPF程序并发送消息
Winform窗体嵌入WPF程序并发送消息
用C#在Winform中播放flash动画
用C#在Winform中播放flash动画,使用了Shockwave控件,挺不错
c# winform control
c# winform Controls,最新版本请下载c# contorl xp style。
PDF控件的使用方法
WPF中开发PDF预览功能,如何使用PDF控件,和浏览图片
窗体设计器(winform窗体)
.Net设计器,目前完成了窗体设计器,可以编译运行窗体,可以保存打开,基于微软的设计期模型,欢迎使用,需要.Net FrameWork3.5环境


