GTK#

Widget Overview

The general steps to creating a widget in GTK are:

Widget Hierarchy

Here is the class hierarchy tree used to implement widgets:
GObject
 |  
 Gtk.Object
  +Gtk.Widget
  | +Gtk.Misc
  | | +Gtk.Label
  | | | `Gtk.AccelLabel
  | | +Gtk.Arrow
  | | `Gtk.Image
  | +Gtk.Container
  | | +Gtk.Bin
  | | | +Gtk.Alignment
  | | | +Gtk.Frame
  | | | | Gtk.AspectFrame
  | | | +Gtk.Button
  | | | | +Gtk.ToggleButton
  | | | | | `Gtk.CheckButton
  | | | | |   `Gtk.RadioButton
  | | | | `Gt.kOptionMenu
  | | | +Gtk.Item
  | | | | +Gtk.MenuItem
  | | | |   +Gtk.CheckMenuItem
  | | | |   | `Gtk.RadioMenuItem
  | | | |   +Gtk.ImageMenuItem
  | | | |   +Gtk.SeparatorMenuItem
  | | | |   `Gtk.TearoffMenuItem
  | | | +Gtk.Window
  | | | | +Gtk.Dialog
  | | | | | +Gtk.ColorSelectionDialog
  | | | | | +Gtk.FileSelection
  | | | | | +Gtk.FontSelectionDialog
  | | | | | +Gtk.InputDialog
  | | | | | `Gtk.MessageDialog
  | | | | `GtkPlug
  | | | +Gtk.EventBox
  | | | +Gtk.HandleBox
  | | | +Gtk.ScrolledWindow
  | | | `Gtk.Viewport
  | | +Gtk.Box
  | | | +Gtk.ButtonBox
  | | | | +Gtk.HButtonBox
  | | | | `Gtk.VButtonBox
  | | | +Gtk.VBox
  | | | | +Gtk.ColorSelection
  | | | | +Gtk.FontSelection
  | | | | `Gtk.GammaCurve
  | | | `Gtk.HBox
  | | |   +Gtk.Combo
  | | |   `Gtk.Statusbar
  | | +Gtk.Fixed
  | | +Gtk.Paned
  | | | +Gtk.HPaned
  | | | `Gtk.VPaned
  | | +Gtk.Layout
  | | +Gtk.MenuShell
  | | | +Gtk.MenuBar
  | | | `Gtk.Menu
  | | +Gtk.Notebook
  | | +Gtk.Socket
  | | +Gtk.Table
  | | +Gtk.TextView
  | | +Gtk.Toolbar
  | | `Gtk.TreeView
  | +Gtk.Calendar
  | +Gtk.DrawingArea
  | | `Gtk.Curve
  | +Gtk.Editable
  | | +Gtk.Entry
  | |   `Gtk.SpinButton
  | +Gtk.Ruler
  | | +Gtk.HRuler
  | | `Gtk.VRuler
  | +Gtk.Range
  | | +Gtk.Scale
  | | | +Gtk.HScale
  | | | `Gtk.VScale
  | | `Gtk.Scrollbar
  | |   +Gtk.HScrollbar
  | |   `Gtk.VScrollbar
  | +Gtk.Separator
  | | +Gtk.HSeparator
  | | `Gtk.VSeparator
  | +Gtk.Invisible
  | +Gtk.Preview
  | `Gtk.ProgressBar
  +Gtk.Adjustment
  +Gtk.CellRenderer
  | +Gtk.CellRendererPixbuf
  | +Gtk.CellRendererText
  | +Gtk.CellRendererToggle
  +Gtk.ItemFactory
  +Gtk.Tooltips
  `Gtk.TreeViewColumn