当前位置: 首页>>代码示例>>C#>>正文


C# Control.Detach方法代码示例

本文整理汇总了C#中Eto.Forms.Control.Detach方法的典型用法代码示例。如果您正苦于以下问题:C# Control.Detach方法的具体用法?C# Control.Detach怎么用?C# Control.Detach使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Eto.Forms.Control的用法示例。


在下文中一共展示了Control.Detach方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: SetParent

		/// <summary>
		/// Sets the parent of the specified <paramref name="child"/> to this container
		/// </summary>
		/// <remarks>
		/// This is used by container authors to set the parent of a child before it is added to the underlying platform control.
		/// 
		/// If this returns <c>true</c>, you should call <see cref="Control.OnLoadComplete"/> after the control has been added
		/// to the underlying platform control.
		/// </remarks>
		/// <returns><c>true</c>, if parent was set, <c>false</c> otherwise.</returns>
		/// <param name="child">Child to set the parent</param>
		protected bool SetParent(Control child)
		{
			if (child != null && !ReferenceEquals(child.Parent, this))
			{
				// Detach so parent can remove from controls collection if necessary.
				// prevents UnLoad from being called more than once when containers think a control is still a child
				// no-op if there is no parent (handled in detach)
				child.Detach();

				child.Parent = this;
				if (Loaded && !child.Loaded)
				{
					child.OnPreLoad(EventArgs.Empty);
					child.OnLoad(EventArgs.Empty);
					child.OnDataContextChanged(EventArgs.Empty);
					return true;
				}
			}
			return false;
		}
开发者ID:Exe0,项目名称:Eto,代码行数:31,代码来源:Container.cs

示例2: SetParent

		/// <summary>
		/// Sets the parent of the specified <paramref name="child"/> to this container
		/// </summary>
		/// <remarks>
		/// This is used by container authors to set the parent of a child before it is added to the underlying platform control.
		/// 
		/// The <paramref name="assign"/> parameter should call the handler method to add the child to the parent.
		/// </remarks>
		/// <returns><c>true</c>, if parent was set, <c>false</c> otherwise.</returns>
		/// <param name="child">Child to set the parent</param>
		/// <param name="assign">Method to assign the child to the handler</param>
		/// <param name="previousChild">Previous child that the new child is replacing.</param>
		protected void SetParent(Control child, Action assign, Control previousChild = null)
		{
			bool triggerPrevious = false;
			if (previousChild != null && !ReferenceEquals(previousChild.Parent, null) && (!ReferenceEquals(previousChild, child) || !ReferenceEquals(child.Parent, this)))
			{
#if DEBUG
				if (!ReferenceEquals(previousChild.Parent, this))
					throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, "The child control is not a child of this container. Ensure you only remove children that you own."));
#endif
				if (previousChild.Loaded)
				{
					previousChild.TriggerUnLoad(EventArgs.Empty);
				}
				previousChild.Parent = null;
				triggerPrevious = true;
			}
			if (child != null && !ReferenceEquals(child.Parent, this))
			{
				// Detach so parent can remove from controls collection if necessary.
				// prevents UnLoad from being called more than once when containers think a control is still a child
				// no-op if there is no parent (handled in detach)
				child.Detach();

				child.Parent = this;
				if (Loaded && !child.Loaded)
				{
					using (child.Platform.Context)
					{
						child.TriggerPreLoad(EventArgs.Empty);
						child.TriggerLoad(EventArgs.Empty);
						child.TriggerDataContextChanged(EventArgs.Empty);
						assign();
						child.TriggerLoadComplete(EventArgs.Empty);
					}
					if (triggerPrevious)
						previousChild.TriggerDataContextChanged(EventArgs.Empty);
					return;
				}
			}
			assign();
			if (triggerPrevious)
				previousChild.TriggerDataContextChanged(EventArgs.Empty);
		}
开发者ID:GilbertoBotaro,项目名称:Eto,代码行数:55,代码来源:Container.cs


注:本文中的Eto.Forms.Control.Detach方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。