<Type Name="Bin" FullName="Gtk.Bin"> <TypeSignature Language="C#" Value="public class Bin :
 Gtk.Container, Implementor, IWrapper, IWrapper, IDisposable" Maintainer="Lee Mallabone, Miguel de Icaza" /> <AssemblyInfo> <AssemblyName>gtk-sharp</AssemblyName> <AssemblyVersion>0.0.0.0</AssemblyVersion> <Attributes /> </AssemblyInfo> <ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement> <Docs> <summary>A container with just one child.</summary> <remarks> <para> A Bin widget is a <see cref="T:Gtk.Container" /> with just one child. It is used to create subclasses, since it provides common code needed for handling a single child <see cref="T:Gtk.Widget" />. </para> <para> Many GTK+ widgets are subclasses of Bin, including <see cref="T:Gtk.Window" />, <see cref="T:Gtk.Button" />, <see cref="T:Gtk.Frame" />, <see cref="T:Gtk.HandleBox" />, and <see cref="T:Gtk.ScrolledWindow" />.</para> <para> To place a child widget inside this container, use the standard <see cref="M:Gtk.Container.Add" /> method.</para> <para> For the widget to be useful, it should participate in size negotiation and size allocation using the events <see cref="E:Gtk.Widget.SizeAllocated" /> and <see cref="E:Gtk.Widget.SizeRequested" />.</para> <para> Since Gtk.Bin is an abstract class in C, it is necessary to register a Type. Sample follows. </para> <example> <code lang="C#"> using System; using Gtk; using GtkSharp; // // A simple Bin class: a simple container that adds padding. // class MyPadder : Bin { int pad = 50; static GLib.Type type; Widget child; static MyPadder () { // // Register the type on the static constructor, so it is // available on the instance constructors // type = RegisterGType (typeof (MyPadder)); } public MyPadder () : base (type) { // To track our child widget. Added += new AddedHandler (MyAdded); // Participate in size negotiation SizeRequested += new SizeRequestedHandler (OnSizeRequested); SizeAllocated += new SizeAllocatedHandler (OnSizeAllocated); } // // Invoked to query our size // void OnSizeRequested (object o, SizeRequestedArgs args) { if (child != null){ int width = args.Requisition.width; int height = args.Requisition.height; child.GetSizeRequest (out width, out height); if (width == -1 || height == -1) width = height = 80; SetSizeRequest (width + pad * 2, height + pad * 2); } } // // Invoked to propagate our size // void OnSizeAllocated (object o, SizeAllocatedArgs args) { if (child != null){ Gdk.Rectangle mine = args.Allocation; Gdk.Rectangle his = mine; his.x += pad; his.y += pad; his.width -= pad * 2; his.height -= pad * 2; child.SizeAllocate (his); } } // // Public property of the Padding widget // public int Pad { get { return pad; } set { pad = value; QueueResize (); } } void MyAdded (object o, AddedArgs args) { child = args.Widget; } } class Y { static void Main () { Application.Init (); Window w = new Window ("Hello"); MyPadder x = new MyPadder (); x.Pad = 100; Button b = new Button ("Hola"); w.Add (x); x.Add (b); w.ShowAll (); Application.Run (); } } </code> </example> </remarks> </Docs> <Base> <BaseTypeName>Gtk.Container</BaseTypeName> </Base> <Interfaces> <Interface> <InterfaceName>Atk.Implementor</InterfaceName> </Interface> <Interface> <InterfaceName>GLib.IWrapper</InterfaceName> </Interface> <Interface> <InterfaceName>GLib.IWrapper</InterfaceName> </Interface> <Interface> <InterfaceName>System.IDisposable</InterfaceName> </Interface> </Interfaces> <Attributes /> <Members> <Member MemberName="Finalize"> <MemberSignature Language="C#" Value="protected virtual void Finalize ();" /> <MemberType>Method</MemberType> <ReturnValue> <ReturnType>System.Void</ReturnType> </ReturnValue> <Parameters /> <Docs> <summary>Disposes the resources associated with the object.</summary> <remarks /> </Docs> </Member> <Member MemberName=".ctor"> <MemberSignature Language="C#" Value="public Bin (IntPtr raw);" /> <MemberType>Constructor</MemberType> <ReturnValue /> <Parameters> <Parameter Name="raw" Type="System.IntPtr" /> </Parameters> <Docs> <summary>Internal constructor</summary> <param name="raw">Pointer to the C object.</param> <returns>An instance of Bin, wrapping the C object.</returns> <remarks> <para>This is an internal constructor, and should not be used by user code.</para> </remarks> </Docs> </Member> <Member MemberName="GType"> <MemberSignature Language="C#" Value="public static uint GType { get; };" /> <MemberType>Property</MemberType> <ReturnValue> <ReturnType>System.UInt32</ReturnType> </ReturnValue> <Docs> <summary>The GLib Type for Gtk.Bin</summary> <returns>The GLib Type for the Gtk.Bin class.</returns> <remarks /> </Docs> </Member> <Member MemberName=".ctor"> <MemberSignature Language="C#" Value="protected Bin (GLib.Type gtype);" /> <MemberType>Constructor</MemberType> <ReturnValue /> <Parameters> <Parameter Name="gtype" Type="GLib.Type" /> </Parameters> <Docs> <summary>Internal constructor</summary> <param name="gtype">GLib type for the type</param> <returns>Creates a new instance of Bin, using the GLib-provided type</returns> <remarks> <para>This is a constructor used by derivative types of <see cref="T:Gtk.Bin" /> that would have their own GLib type assigned to it. This is not typically used by C# code.</para> </remarks> </Docs> </Member> <Member MemberName=".ctor"> <MemberSignature Language="C#" Value="protected Bin ();" /> <MemberType>Constructor</MemberType> <ReturnValue /> <Parameters /> <Docs> <summary>To be added</summary> <returns>a <see cref="T:Gtk.Bin" /></returns> <remarks>To be added</remarks> </Docs> </Member> </Members> </Type>