Source/Ribbon/DesignTimeProviderContainer.cs
(开头部分) 8KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System.Drawing;
using System.Windows.Forms;
namespace DevComponents.DotNetBar
{
/// <summary>
/// Summary description for DesignTimeProviderContainer.
/// </summary>
public class DesignTimeProviderContainer
{
/// <summary>
/// Returns information about insertion position for an item given screen coordinates. Used internally for drag&drop support.
/// </summary>
/// <param name="containerItem">Container item</param>
/// <param name="pScreen">Screen coordinates</param>
/// <param name="DragItem">Item that is being dragged</param>
/// <returns>Information about insertion position or null if item cannot be inserted to the container.</returns>
public static InsertPosition GetInsertPosition(BaseItem containerItem, Point pScreen, BaseItem DragItem)
{
InsertPosition objInsertPos=null;
Control objContainer = null;
if (containerItem is PopupItem && containerItem.Expanded)
objContainer = ((PopupItem)containerItem).PopupControl;
else
objContainer = containerItem.ContainerControl as Control;
if(objContainer==null)
return null;
Point pClient=objContainer.PointToClient(pScreen);
Rectangle thisRect=containerItem.DisplayRectangle;
if (containerItem is PopupItem && containerItem.Expanded)
thisRect = objContainer.DisplayRectangle;
if(thisRect.Contains(pClient) || containerItem.SubItems.Count==0 && objContainer.ClientRectangle.Contains(pClient) || containerItem is ItemContainer && ((ItemContainer)containerItem).SystemContainer && objContainer.ClientRectangle.Contains(pClient))
{
Rectangle r;
BaseItem objItem;
// Check first inside any expanded items
objItem=containerItem.ExpandedItem();
if(objItem!=null)
{
IDesignTimeProvider provider=objItem as IDesignTimeProvider;
if(provider!=null)
{
objInsertPos=provider.GetInsertPosition(pScreen, DragItem);
if(objInsertPos!=null)
return objInsertPos;
}
}
for(int i=0;i<containerItem.SubItems.Count;i++)
{
objItem=containerItem.SubItems[i];
r=objItem.DisplayRectangle;
r.Inflate(2,2);
if(objItem.Visible && r.Contains(pClient))
{
if(objItem.SystemItem && containerItem.SubItems.Count!=1)
{
后面还有 196 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。