gpt4 book ai didi

c# - WPF C# 拖放事件

转载 作者:太空宇宙 更新时间:2023-11-03 17:04:25 24 4
gpt4 key购买 nike

我有一个 Canvas ,我将一些工具放到上面以创建图表(这位于 tabitem2 中)。

我想要做的是,当一个工具被放到 Canvas 上时,关联一个将文本吐出到文本框(位于 tabitem3 中)的事件。

XAML:

<ListBox>
<ListBox.Resources>
<Style TargetType="{x:Type Image}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="100"/>
<EventSetter Event="MouseLeftButtonDown" Handler="DragImage"/>
</Style>
</ListBox.Resources>
<ListBoxItem>
<Image Source="toolitem1.png"></Image>
</ListBoxItem>
</ListBox>
<Canvas x:Name="Canvas" AllowDrop="True" Background="Aqua" Drop="DropImage"/>

代码隐藏:

private void DragImage(object sender, MouseButtonEventArgs e)
{

Image image = e.Source as Image;
DataObject data = new DataObject(typeof(ImageSource), image.Source);
DragDrop.DoDragDrop(image, data, DragDropEffects.Copy);

}


private void DropImage(object sender, DragEventArgs e)
{
ImageSource image = e.Data.GetData(typeof(ImageSource)) as ImageSource;
Image imageControl = new Image() { Width = image.Width, Height = image.Height, Source = image };
Canvas.SetLeft(imageControl, e.GetPosition(this.Canvas).X);
Canvas.SetTop(imageControl, e.GetPosition(this.Canvas).Y);
this.Canvas.Children.Add(imageControl);
}

更新:

添加了一些示例代码并尝试了以下人员的建议但无济于事。看起来当我尝试在我的 ListBoxItem 对象中使用 DragDrop.Drop 时,它会覆盖 Canvas 的 DropImage 事件,所以我仍然卡住了。

最佳答案

每个放置目标只有一个事件。你想在该处理程序中利用的任何与源相关的信息都应该作为数据参数的一部分传递给 DoDragDrop

关于c# - WPF C# 拖放事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5682200/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com