本文整理汇总了C#中Eto.Forms.Control.TriggerUnLoad方法的典型用法代码示例。如果您正苦于以下问题:C# Control.TriggerUnLoad方法的具体用法?C# Control.TriggerUnLoad怎么用?C# Control.TriggerUnLoad使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Eto.Forms.Control
的用法示例。
在下文中一共展示了Control.TriggerUnLoad方法的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.
///
/// 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);
}
示例2: RemoveParent
/// <summary>
/// Removes the specified control from the container.
/// </summary>
/// <remarks>
/// This should only be called on controls that the container owns. Otherwise, call <see cref="Control.Detach"/>
/// </remarks>
/// <param name="child">Child to remove from this container</param>
protected void RemoveParent(Control child)
{
if (child != null && !ReferenceEquals(child.Parent, null))
{
#if DEBUG
if (!ReferenceEquals(child.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 (child.Loaded)
{
child.TriggerUnLoad(EventArgs.Empty);
}
child.Parent = null;
child.TriggerDataContextChanged(EventArgs.Empty);
}
}