我想驗證拖放操作是否允許執行&。有效的項目可以來自我們的另一個「控件」,也可以來自自定義樹視圖中的內部項目。目前,我有這樣的:驗證C#中TreeView的拖/放操作的最佳方法
bool CanDrop(DragEventArgs e)
{
bool allow = false;
Point point = tree.PointToClient(new Point(e.X, e.Y));
TreeNode target = tree.GetNodeAt(point);
if (target != null)
{
if (CanWrite(target)) //user permissions
{
if (e.Data.GetData(typeof(DataInfoObject)) != null) //from internal application
{
DataInfoObject info = (DataInfoObject)e.Data.GetData(typeof(DataInfoObject));
DragDataCollection data = info.GetData(typeof(DragDataCollection)) as DragDataCollection;
if (data != null)
{
allow = true;
}
}
else if (tree.SelectedNode.Tag.GetType() != typeof(TreeRow)) //node belongs to this & not a root node
{
if (TargetExistsInNode(tree.SelectedNode, target) == false)
{
if (e.Effect == DragDropEffects.Copy)
{
allow = true;
}
else if (e.Effect == DragDropEffects.Move)
{
allow = true;
}
}
}
}
}
return allow;
}
我已經感動了所有的檢查代碼,以這種方法來嘗試改善的事情,但對我來說這仍然是可怕的!
這麼多的邏輯,以及它做的事情,我希望樹視圖本身會做(例如「TargetExistsInNode」檢查拖動節點是否被拖拽到它的一個孩子)。
驗證控件輸入的最佳方法是什麼?
你說得對。謝謝! – 2008-09-25 07:44:45