<ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <linklocation="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement>
<para><seecref="T:Gtk.Dialog"/> boxes are a convenient way to prompt the user for a small amount of input, eg. to display a message, ask a question, or anything else that does not require extensive effort by the user.</para>
<para>Gtk# treats a dialog as a window split vertically. The top section is a <seecref="T:Gtk.VBox"/>, and is where widgets such as a <seecref="T:Gtk.Label"/> or an <seecref="T:Gtk.Entry"/> should be packed. The bottom area is known as the <seecref="P:Gtk.Dialog.ActionArea"/>. This is generally used for packing buttons into the dialog which may perform functions such as cancel, ok, or apply. The two areas are separated by a <seecref="T:Gtk.HSeparator"/>.</para>
<para>The two primary areas of a dialog can be accessed as the <seecref="P:Gtk.Dialog.Vbox"/> property and the <seecref="P:Gtk.Dialog.ActionArea"/> property. To set the dialog to be modal, use the <seecref="P:Gtk.Window.Modal"/> property.</para>
<para>If you want to block waiting for a dialog to return before returning control flow to your code, you can call <seecref="M:Gtk.Dialog.Run"/>. This function enters a recursive main loop and waits for the user to respond to the dialog, returning the <seecref="T:Gtk.ResponseType"/> corresponding to the <seecref="T:Gtk.Button"/> the user clicked.</para>
<para>For a simple dialog, you would probably use <seecref="T:Gtk.MessageDialog"/> to save yourself some effort. However, you would need to create the <seecref="T:Gtk.Dialog"/> contents manually if you had more than a simple message in the <seecref="T:Gtk.Dialog"/>.</para>
<summary>Adds an activatable widget to the <seecref="T:Gtk.Dialog.ActionArea"/> of a <seecref="T:Gtk.Dialog"/>.</summary>
<paramname="child">an object of type <seecref="T:Gtk.Widget"/>.</param>
<paramname="response_id">an object of type <seecref="T:System.UInt32"/>.</param>
<remarks>
Adds an activatable <seecref="T:Gtk.Widget"/> to the <seecref="T:Gtk.Dialog.ActionArea"/> of a <seecref="T:Gtk.Dialog"/>, connecting a signal handler that will <seecref="E:Gtk.Dialog.Response"/> on the <seecref="T:Gtk.Dialog"/> when the <seecref="T:Gtk.Widget"/> is activated.
The <seecref="T:Gtk.Widget"/> is appended to the end of the <seecref="T:Gtk.Dialog.ActionArea"/>. If you want to add a non-activatable <seecref="T:Gtk.Widget"/>, simply pack it into the <seecref="T:Gtk.Dialog.ActionArea"/> field of the <seecref="T:Gtk.Dialog"/>.
<summary>Waits for the <seecref="E:Gtk.Dialog.Response"/> event or the <seecref="T:Gtk.Dialog"/> to be detroyed.</summary>
<returns>an object of type <seecref="T:System.UInt32"/>.</returns>
<remarks>
<para>
Waits for the <seecref="E:Gtk.Dialog.Response"/> event or the <seecref="T:Gtk.Dialog"/> to be destroyed.
If the <seecref="T:Gtk.Dialog"/> is destroyed during the call to <seecref="M:Gtk.Dialog.Run()"/>, <seecref="T:Gtk.Dialog"/> returns <seecref="F:Gtk.ResponseType.None"/>.
Otherwise, it returns the response ID from the <seecref="E:Gtk.Dialog.Response"/> event.
Before entering the recursive main loop, <seecref="M:Gtk.Dialog.Run()"/> calls <seecref="M:Gtk.Widget.Show()"/> on the <seecref="T:Gtk.Dialog"/> for you.
Note that you still need to show any children of the <seecref="T:Gtk.Dialog"/> yourself.
</para>
<para>
During <seecref="M:Gtk.Dialog.Run()"/>, the default behavior of <seecref="E:Gtk.Window.DeleteEvent"/> is disabled;
if the <seecref="T:Gtk.Dialog"/> receives <seecref="E:Gtk.Window.DeleteEvent"/>, it will not be destroyed as usual, and <seecref="M:Gtk.Dialog.Run()"/> will return <seecref="F:Gtk.ResponseType.DeleteEvent"/>.
Also, during <seecref="M:Gtk.Dialog.Run()"/> the <seecref="T:Gtk.Dialog"/> will be modal.
You can force <seecref="M:Gtk.Dialog.Run()"/> to return at any time by calling <seecref="M:Gtk.Dialog.Respond"/> to emit the <seecref="E:Gtk.Dialog.Response"/> event.
Destroying the <seecref="T:Gtk.Dialog"/> during <seecref="M:Gtk.Dialog.Run()"/> is a very bad idea, because your post-run code will not know whether the <seecref="T:Gtk.Dialog"/> was destroyed or not.
</para>
<para>
After <seecref="M:Gtk.Dialog.Run()"/> returns, you are responsible for hiding or destroying the <seecref="T:Gtk.Dialog"/> if you wish to do so.
<summary>A convenient way to sensitize/desensitize dialog buttons.</summary>
<paramname="response_id">an object of type <seecref="T:System.UInt32"/>.</param>
<paramname="setting">an object of type <seecref="T:System.Boolean"/>.</param>
<remarks>
Calls <seecref="M:Gtk.Widget.SetSensitive(System.Int32,System.Boolean)"/> for each widget in the <seecref="P:Gtk.Dialog.ActionArea"/> with the given response_id.
A convenient way to sensitize/desensitize dialog buttons.
<returns>Creates a new instance of Dialog, using the GLib-provided type</returns>
<remarks>
<para>This is a constructor used by derivative types of <seecref="T:Gtk.Dialog"/> that would have their own GLib type assigned to it. This is not typically used by C# code.</para>