/// <summary> /// Drop の仕方を取得します。 /// </summary> /// <param name="target">現在マウスが載っている TreeNode を指定します。</param> /// <param name="dde_on">指定した Drop 目標自体に落とす時の効果を返します。</param> /// <param name="dde_prt_bet">兄弟位置に挿入する時の効果を返します。</param> /// <param name="dde_self_bet">子供位置に挿入する時の効果を返します。</param> /// <returns> /// 以下の組合せの値が返されます。 /// 1. 自分自身に Drop 可能か /// 2. 兄弟位置に挿入可能か /// 4. 子供位置に挿入可能か /// </returns> protected override int GetDropAllowance( System.Windows.Forms.TreeNode target, System.Windows.Forms.DragEventArgs e, out DDE dde_on, out DDE dde_prt_bet, out DDE dde_self_bet) { IDropTarget dt; bool on, self_bet, prt_bet; //-- (IDropTarget)target if ((dt = target as IDropTarget) != null) { on = dt.DragOver(e); dde_on = e.Effect; self_bet = dt.DragOverBetweenChild(e); dde_self_bet = e.Effect; } else { on = self_bet = false; dde_on = dde_self_bet = DDE.None; } //-- (IDropTarget)target.Parent if ((dt = target.Parent as IDropTarget) != null) { prt_bet = dt.DragOverBetweenChild(e); dde_prt_bet = e.Effect; } else { prt_bet = false; dde_prt_bet = DDE.None; } //--結果 return((on?1:0) + (prt_bet?2:0) + (self_bet?4:0)); }
public System.Windows.Forms.DragDropEffects DoDragDrop(object data, System.Windows.Forms.DragDropEffects allowedEffects) { }
/// <summary> /// Drop が可能かどうかを取得します。 /// </summary> /// <param name="target">Drop の対象の TreeNode を指定します。</param> /// <param name="e">Drag の状況を指定します。</param> /// <param name="dde_on">TreeNode に落とす時の動作を返します。</param> /// <param name="dde_prt_bet">兄弟位置に落とす時の動作を返します。</param> /// <param name="dde_self_bet">子ノード位置に落とす時の動作を返します。</param> /// <returns>可能な Drop の方法を数値で返します。継承元の説明を参照して下さい。</returns> protected override int GetDropAllowance(System.Windows.Forms.TreeNode target, System.Windows.Forms.DragEventArgs e, out System.Windows.Forms.DragDropEffects dde_on, out System.Windows.Forms.DragDropEffects dde_prt_bet, out System.Windows.Forms.DragDropEffects dde_self_bet) { dde_on = dde_prt_bet = dde_self_bet = DDE.Move; //System.Console.WriteLine("o"); return((_on?1:0) + (_bet?6:0)); }
//=========================================================== // そこに Drop 出来るか否かの判定 //=========================================================== /// <summary> /// Drop の仕方を取得します。 /// </summary> /// <param name="target">現在マウスが載っている TreeNode を指定します。</param> /// <param name="dde_on">指定した Drop 目標自体に落とす時の効果を返します。</param> /// <param name="dde_prt_bet">兄弟位置に挿入する時の効果を返します。</param> /// <param name="dde_self_bet">子供位置に挿入する時の効果を返します。</param> /// <returns> /// 以下の組合せの値が返されます。 /// 1. 自分自身に Drop 可能か /// 2. 兄弟位置に挿入可能か /// 4. 子供位置に挿入可能か /// </returns> protected abstract int GetDropAllowance( System.Windows.Forms.TreeNode target, System.Windows.Forms.DragEventArgs e, out DDE dde_on, out DDE dde_prt_bet, out DDE dde_self_bet);