【发布时间】:2016-02-27 09:26:04
【问题描述】:
我正在尝试在 WPF 中进行拖放操作。
我的程序允许你在屏幕上拖动彩色标签,本质上给你一个正方形被拖放的效果。
请记住,只有文本被拖动而不是控件本身(即不是颜色):
我想要实现的是,当 drop 事件触发时,我可以更改从中拖动文本的标签的颜色。 在咨询了 MSDN 之后,我无法弄清楚如何获得有问题的控制,经过大量的试验和错误,我希望这里有人可以提供帮助。 https://msdn.microsoft.com/en-us/library/system.windows.forms.drageventargs.data(v=vs.110).aspx
下面是一个有效的代码示例,但我要更改颜色的标签是硬编码的,而实际上它可以是多个标签中的任何一个。
private void ObjDrop(object sender, DragEventArgs e)
{
//testSquare is a hardcoded label
testSquare.Background = Brushes.LimeGreen;
//what I really need is for a variable to detect which label to access each time before I change its colour. So something along the lines of
Label myLabel = someCodeToGetTheLabelThatWasDragged;
myLabel.Background = Brushes.LimeGreen;
}
希望我解释的足够好,提前谢谢。
【问题讨论】:
-
e.OriginalSource或e.Source不包含发起拖动事件的控件? -
e.Source 让我走上了正轨。然而,使用我现在拥有的代码,它正在改变目的地的颜色,或者发生“drop”的标签。我正在寻找更改发生“拖动”的标签的颜色,但我只需要在下降本身发生后才发生这种情况。从“放置”事件中传递或访问“拖动”标签及其属性的理想方式是什么?或者有没有想到的更整洁的方式?
标签: c# wpf drag-and-drop