我有以下代码:
private void MouseMove(object sender, MouseEventArgs e)
{
TileView view = sender as TileView;
if (view == null) return;
if (e.Button == MouseButtons.Left && _TileHitInfo != null)
{
Size dragSize = SystemInformation.DragSize;
Rectangle dragRect = new Rectangle(new Point(_TileHitInfo.HitPoint.X - dragSize.Width / 2,
_TileHitInfo.HitPoint.Y - dragSize.Height / 2), dragSize);
if (!dragRect.Contains(new Point(e.X, e.Y)))
{
T row = view.GetRow(_TileHitInfo.RowHandle) as T;
if (row != null)
{
view.GridControl.DoDragDrop(new DragnDropObject<T> {Data =row}, DragDropEffects.Copy);
}
_TileHitInfo = null;
DXMouseEventArgs.GetMouseArgs(e).Handled = true;
}
}
}
这似乎可以正确设置拖放对象。但是,当我去收集器DragDrop事件处理程序中的对象取消框时,以下代码不起作用(当传递ImageGrab类型的对象时):
if (e.Data.GetDataPresent(typeof (DragnDropObject<ImageGrab>)))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
有没有办法在Drag n Drop对象数据中使用泛型类型?
如果我将包装器对象(T
)中的DragnDropObject
属性定义为object
并删除泛型类型,则所有似乎都可以正常工作。
有没有办法可以保留我的通用方法/对象并对类型进行操作,而不是总是将我的&#34;包装器对象取消装箱&#34;然后将类型转换到那里?