cuadro de dialogo.odt

Download cuadro de dialogo.odt

If you can't read please download the document

Upload: josepedrorivera

Post on 16-Jan-2016

218 views

Category:

Documents


0 download

TRANSCRIPT

Cuadro de dilogo Ejemplo de cuadro de dilogo.Un cuadro de dilogo es un tipo de ventana que permite comunicacin simple entre el usuario y el sistema informtico.El tipo cuadro de dilogo ms simple nicamente informa al usuario, es decir que muestran un texto (y eventualmente objetos grficos) y ofrece la opcin de cerrar el cuadro. Un ejemplo es un cuadro de error.Luego existen cuadros de pregunta o confirmacin, que adems de mostrar informacin ofrecen alternativas al usuario. La ms sencilla es una opcin binaria como aceptar / cancelar o permitir / impedir.Existen versiones ms complejas con ms opciones. Por ejemplo, si el usuario intenta cerrar un editor de texto y el documento abierto tiene cambios sin guardar, un cuadro de dilogo completo podra mostrar cuatro opciones: cerrar sin guardar, guardar y salir, cancelar el cierre y seguir editando y guardar con otro nombre, sta ltima con una caja de texto donde ingresar el nombre alternativo.Los cuadro de dilogo se los clasifica en modales y no modales, segn si impiden o permiten que el usuario contine usando el programa ignorando el cuadro. Los cuadros modales se suelen usar para mostrar informacin crtica y ante eventos peligrosos y acciones irreversibles.En ocasiones, se usan cuadro de dilogo para paliar la ausencia de funcionalidad de revertir acciones. Los expertos en usabilidad afirman que es un mecanismo pobre, ya que desconcierta al usuario ante el cambio brusco en el funcionamiento del programa, y motiva a ignorar la informacin del cuadro.Informacin general sobre cuadros de dilogo.NET Framework 4.5

Otras versiones

cuadros de dilogo y hay dos tipos: modales y no modales. modales los muestras las funciones cuando necesitan datos adicionales de los usuarios para continuar. Aceptar o Cancelar. Aceptar se indica que el usuario ha introducido los datos y desea que la funcin contine su proceso con esos datos. Cancelar indica que el usuario desea detener la ejecucin de la funcin. no modal, por otra parte, no impide que el usuario active otras ventanas mientras est abierto. Cerrar para cerrar el cuadro de dilogo y puede proporcionar botones adicionales para ejecutar funciones concretas, como un botn Buscar siguiente para buscar la palabra siguiente que coincida con los criterios de una bsqueda de palabra. Dialog Box Sample proporciona ejemplos relacionados. Este tema contiene las secciones siguientes.Cuadros de mensaje

Cuadros de dilogo comunes

Cuadros de dilogo personalizados

Temas relacionados

Cuadros de mensaje cuadro de mensaje es un cuadro de dilogo que se puede utilizar para mostrar informacin textual y permitirles que los usuarios tomen decisiones con botones. Cuadro de dilogo Procesador de textos MessageBox. MessageBox permite configurar el texto, el ttulo, el icono y los botones del cuadro de mensaje, utilizando cdigo como el siguiente.

C#VB// Configure the message box to be displayedstring messageBoxText = "Do you want to save changes?";string caption = "Word Processor";MessageBoxButton button = MessageBoxButton.YesNoCancel;MessageBoxImage icon = MessageBoxImage.Warning;

staticShow, como se muestra en el cdigo siguiente.

C#VB// Display message boxMessageBox.Show(messageBoxText, caption, button, icon);

C#VB// Display message boxMessageBoxResult result = MessageBox.Show(messageBoxText, caption, button, icon);

// Process message box resultsswitch (result){case MessageBoxResult.Yes:// User pressed Yes button// ...break;case MessageBoxResult.No:// User pressed No button// ...break;case MessageBoxResult.Cancel:// User pressed Cancel button// ...break;}

MessageBox, MessageBox Sample y Dialog Box Sample. MessageBox puede proporcionar una experiencia simple de usuario de cuadro de dilogo, la ventaja de utilizar MessageBox es que se trata del nico tipo de ventana que pueden mostrar las aplicaciones que se ejecutan dentro de un recinto de seguridad confiable parcial (vea Seguridad (WPF)), tal como Aplicaciones del explorador XAML (XBAPs). Cuadros de dilogo comunes cuadros de dilogo comunes. Aa969773.collapse_all(es-es,VS.110).gifAbrir archivo (Dilogo) Cuadro de dilogo Abrir OpenFileDialog y se encuentra en el espacio de nombres Microsoft.Win32.

C#VB// Configure open file dialog boxMicrosoft.Win32.OpenFileDialog dlg = new Microsoft.Win32.OpenFileDialog();dlg.FileName = "Document"; // Default file namedlg.DefaultExt = ".txt"; // Default file extensiondlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show open file dialog boxNullable result = dlg.ShowDialog();

// Process open file dialog box resultsif (result == true){// Open documentstring filename = dlg.FileName;}

Microsoft.Win32.OpenFileDialog. Nota

OpenFileDialog se puede utilizar para recuperar sin ningn riesgo los nombres de archivo por aplicaciones que se ejecutan con confianza parcial (vea Seguridad (WPF)).

Aa969773.collapse_all(es-es,VS.110).gifGuardar archivo (Cuadro de dilogo) Cuadro de dilogo Guardar como SaveFileDialog y se encuentra en el espacio de nombres Microsoft.Win32.

C#VB// Configure save file dialog boxMicrosoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();dlg.FileName = "Document"; // Default file namedlg.DefaultExt = ".text"; // Default file extensiondlg.Filter = "Text documents (.txt)|*.txt"; // Filter files by extension

// Show save file dialog boxNullable result = dlg.ShowDialog();

// Process save file dialog box resultsif (result == true){// Save documentstring filename = dlg.FileName;}

Microsoft.Win32.SaveFileDialog. Aa969773.collapse_all(es-es,VS.110).gifImprimir (Cuadro de dilogo) Cuadro de dilogo Imprimir PrintDialog y se encuentra en el espacio de nombres System.Windows.Controls.

C#VB// Configure printer dialog boxSystem.Windows.Controls.PrintDialog dlg = new System.Windows.Controls.PrintDialog();dlg.PageRangeSelection = PageRangeSelection.AllPages;dlg.UserPageRangeEnabled = true;

// Show save file dialog boxNullable result = dlg.ShowDialog();

// Process save file dialog box resultsif (result == true){// Print document}

System.Windows.Controls.PrintDialog. Informacin general sobre impresin. Cuadros de dilogo personalizados Window implementa esos comportamientos y, por consiguiente, utiliza Window para crear cuadros de dilogo modales y no modales personalizados. Aa969773.collapse_all(es-es,VS.110).gifCrear un cuadro de dilogo personalizado modal Window para crear una implementacin de un cuadro de dilogo modal tpico, utilizando el cuadro de dilogo Margins como ejemplo (vea Dialog Box Sample). Margins se muestra en la figura siguiente. Cuadro de dilogo Mrgenes Aa969773.collapse_all(es-es,VS.110).gifConfigurar un cuadro de dilogo modal Aceptar en el que los usuarios hacen clic para cerrar el cuadro de dilogo, volver a la funcin y continuar el proceso.

Cancelar en el que los usuarios hagan clic para cerrar el cuadro de dilogo y hacer que la funcin detenga el proceso.

Cerrar en la barra de ttulo.

Minimizar, Maximizary Restaurar.

Sistema para minimizar, maximizar, restaurar y cerrar el cuadro de dilogo.

Cancelar. IsCancel del botn Cancelar en true.

Aceptar. IsDefault del botn Aceptar en true.

XAML

...

OKCancel

VBImports System.Windows ' Window, RoutedEventArgs, IInputElement, DependencyObjectImports System.Windows.Controls ' ValidationImports System.Windows.Input ' Keyboard

Namespace SDKSample

Public Class MarginsDialogBoxInherits WindowPublic Sub New()Me.InitializeComponent()End Sub

...

End Class

End Namespace

C#using System.Windows; // Window, RoutedEventArgs, IInputElement, DependencyObjectusing System.Windows.Controls; // Validationusing System.Windows.Input; // Keyboard

namespace SDKSample{public partial class MarginsDialogBox : Window{public MarginsDialogBox(){InitializeComponent();}

...

}}

XAML

...

Aa969773.collapse_all(es-es,VS.110).gifAbrir un cuadro de dilogo modal

C#VBusing System; // EventArgsusing System.ComponentModel; // CancelEventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextChangedEventArgsusing Microsoft.Win32; // OpenFileDialog

namespace SDKSample{public partial class MainWindow : Window{

...

void formatMarginsMenuItem_Click(object sender, RoutedEventArgs e){// Instantiate the dialog boxMarginsDialogBox dlg = new MarginsDialogBox();

// Configure the dialog boxdlg.Owner = this;dlg.DocumentMargin = this.documentTextBox.Margin;

// Open the dialog box modally dlg.ShowDialog();

...

}

...

}}

Window.Owner con una referencia a la ventana que est mostrando el cuadro de dilogo. Informacin general sobre ventanas de WPF para obtener ms informacin). Nota

Informacin general sobre UI Automation) debe proporcionar un propietario.

ShowDialog. Aa969773.collapse_all(es-es,VS.110).gifValidar datos proporcionados por el usuario

ValidationRule. MarginValidationRule, que comprueba que un valor enlazado es Double y est dentro de un intervalo especificado.

C#VBusing System.Globalization;using System.Windows.Controls;

namespace SDKSample{public class MarginValidationRule : ValidationRule{double minMargin;double maxMargin;

public double MinMargin{get { return this.minMargin; }set { this.minMargin = value; }}

public double MaxMargin{get { return this.maxMargin; }set { this.maxMargin = value; }}

public override ValidationResult Validate(object value, CultureInfo cultureInfo){double margin;

// Is a number?if (!double.TryParse((string)value, out margin)){return new ValidationResult(false, "Not a number.");}

// Is in range?if ((margin < this.minMargin) || (margin > this.maxMargin)){string msg = string.Format("Margin must be between {0} and {1}.", this.minMargin, this.maxMargin);return new ValidationResult(false, msg);}

// Number is validreturn new ValidationResult(true, null);}}}

Validate, que valida los datos y devuelve el objeto ValidationResult correspondiente.

XAML

...

Left Margin:

...

Margen izquierdo no vlido Aceptar botn. Aceptar, controlando el evento Click.

C#VBusing System.Windows; // Window, RoutedEventArgs, IInputElement, DependencyObjectusing System.Windows.Controls; // Validationusing System.Windows.Input; // Keyboard

namespace SDKSample{public partial class MarginsDialogBox : Window{

...

void okButton_Click(object sender, RoutedEventArgs e){// Don't accept the dialog box if there is invalid dataif (!IsValid(this)) return;

...

}

// Validate all dependency objects in a windowbool IsValid(DependencyObject node){// Check if dependency object was passedif (node != null){// Check if dependency object is valid.// NOTE: Validation.GetHasError works for controls that have validation rules attached bool isValid = !Validation.GetHasError(node);if (!isValid){// If the dependency object is invalid, and it can receive the focus,// set the focusif (node is IInputElement) Keyboard.Focus((IInputElement)node);return false;}}

// If this dependency object is valid, check all child dependency objectsforeach (object subnode in LogicalTreeHelper.GetChildren(node)){if (subnode is DependencyObject){ // If a child dependency object is invalid, return false immediately,// otherwise keep checkingif (IsValid((DependencyObject)subnode) == false) return false;}}

// All dependency objects are validreturn true;}}}

GetHasError, el control no vlido obtiene el foco, el mtodo IsValid devuelve false y la ventana se considera no vlida. Aa969773.collapse_all(es-es,VS.110).gifEstablecer el resultado del dilogo modal ShowDialog es fundamentalmente como llamar a un mtodo: el cdigo que abri el cuadro de dilogo mediante ShowDialog espera hasta que vuelva ShowDialog. ShowDialog, el cdigo que lo llam debe decidir si contina o detiene el procesamiento, segn si el usuario presion el botn Aceptar o el botn Cancelar. Boolean que se devuelve desde el mtodo ShowDialog. Aceptar, ShowDialog debe devolver true. DialogResult del cuadro de dilogo al hacer clic en el botn Aceptar. DialogResult tambin hace que la ventana se cierre automticamente, los que elimina la necesidad de llamar explcitamente a Close. Cancelar, ShowDialog debe devolver false, que tambin requiere que se establezca la propiedad DialogResult.

C#VBusing System.Windows; // Window, RoutedEventArgs, IInputElement, DependencyObjectusing System.Windows.Controls; // Validationusing System.Windows.Input; // Keyboard

namespace SDKSample{public partial class MarginsDialogBox : Window{

...

void cancelButton_Click(object sender, RoutedEventArgs e){// Dialog box canceledthis.DialogResult = false;}

...

}}

IsCancel de un botn se establece en true y el usuario presiona el botn Cancelar o la tecla ESC, DialogResult se establece automticamente en false. Click.

XAMLCancel

false cuando un usuario presiona el botn Cerrar de la barra de ttulo o elige el elemento de men Cerrar en el men Sistema. Aa969773.collapse_all(es-es,VS.110).gifProcesar datos devueltos desde un cuadro de dilogo modal DialogResult, la funcin que lo abri puede obtener el resultado del cuadro de dilogo inspeccionando la propiedad DialogResult cuando vuelve ShowDialog.

C#VBusing System; // EventArgsusing System.ComponentModel; // CancelEventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextChangedEventArgsusing Microsoft.Win32; // OpenFileDialog

namespace SDKSample{public partial class MainWindow : Window{

...

void formatMarginsMenuItem_Click(object sender, RoutedEventArgs e){

...

// Process data entered by user if dialog box is acceptedif (dlg.DialogResult == true){// Update fontsthis.documentTextBox.Margin = dlg.DocumentMargin;}}

...

}}

true, la funcin lo utiliza como indicacin para recuperar y procesar los datos proporcionados por el usuario. Nota

ShowDialog, no se puede volver a abrir el cuadro de dilogo.

false, la funcin debe finalizar el procesamiento correctamente. Aa969773.collapse_all(es-es,VS.110).gifCrear un cuadro de dilogo personalizado no modal Cuadro de dilogo Buscar Aa969773.collapse_all(es-es,VS.110).gifAbrir un cuadro de dilogo no modal Show.

XAML

VB

Imports System ' EventArgsImports System.ComponentModel ' CancelEventArgsImports System.Windows ' Window, MessageBoxXxx, RoutedEventArgsImports System.Windows.Controls ' TextChangedEventArgsImports Microsoft.Win32 ' OpenFileDialog

Namespace SDKSample

Public Class MainWindowInherits Window

...

Private Sub editFindMenuItem_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)Dim dlg As New FindDialogBox(Me.documentTextBox)dlg.Owner = MeAddHandler dlg.TextFound, New TextFoundEventHandler(AddressOf Me.dlg_TextFound)dlg.Show()End Sub

...

End Class

End Namespace

C#using System; // EventArgsusing System.ComponentModel; // CancelEventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextChangedEventArgsusing Microsoft.Win32; // OpenFileDialog

namespace SDKSample{public partial class MainWindow : Window{

...

void editFindMenuItem_Click(object sender, RoutedEventArgs e){// Instantiate the dialog boxFindDialogBox dlg = new FindDialogBox(this.documentTextBox);

// Configure the dialog boxdlg.Owner = this;dlg.TextFound += new TextFoundEventHandler(dlg_TextFound);

// Open the dialog box modallydlg.Show();}

...

}}

ShowDialog, Show vuelve inmediatamente. Aa969773.collapse_all(es-es,VS.110).gifProcesar datos devueltos desde un cuadro de dilogo no modal FindDialogBox puede devolver uno o ms resultados de bsqueda a la ventana principal, segn el texto que se est buscando, sin ninguna frecuencia concreta. FindDialogBox implementa TextFoundEvent para este propsito, que requiere primero un delegado.

C#VBusing System;namespace SDKSample{public delegate void TextFoundEventHandler(object sender, EventArgs e);}

TextFoundEventHandler, FindDialogBox implementa TextFoundEvent.

C#VBusing System; // EventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextBox, TextChangedEventArgsusing System.Text.RegularExpressions; // Regex

namespace SDKSample{public partial class FindDialogBox : Window{public event TextFoundEventHandler TextFound;protected virtual void OnTextFound(){TextFoundEventHandler textFound = this.TextFound;if (textFound != null) textFound(this, EventArgs.Empty);}

...

}}

Find puede provocar el evento cuando se encuentra un resultado de bsqueda.

C#VBusing System; // EventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextBox, TextChangedEventArgsusing System.Text.RegularExpressions; // Regex

namespace SDKSample{public partial class FindDialogBox : Window{

...

void findNextButton_Click(object sender, RoutedEventArgs e){

...

// Text foundthis.index = match.Index;this.length = match.Length;OnTextFound();

...

}

...

}}

C#VBusing System; // EventArgsusing System.ComponentModel; // CancelEventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextChangedEventArgsusing Microsoft.Win32; // OpenFileDialog

namespace SDKSample{public partial class MainWindow : Window{

...

void dlg_TextFound(object sender, EventArgs e){// Get the find dialog box that raised the eventFindDialogBox dlg = (FindDialogBox)sender;

// Get find results and select found textthis.documentTextBox.Select(dlg.Index, dlg.Length);this.documentTextBox.Focus();}}}

Aa969773.collapse_all(es-es,VS.110).gifCerrar un cuadro de dilogo no modal DialogResult, un dilogo no modal se puede cerrar utilizando los mecanismos proporcionados por el sistema, que incluyen los siguientes: Cerrar en la barra de ttulo.

Cerrar en el men Sistema.

Close cuando se haga clic en el botn Cerrar.

C#VBusing System; // EventArgsusing System.Windows; // Window, MessageBoxXxx, RoutedEventArgsusing System.Windows.Controls; // TextBox, TextChangedEventArgsusing System.Text.RegularExpressions; // Regex

namespace SDKSample{public partial class FindDialogBox : Window{

...

void closeButton_Click(object sender, RoutedEventArgs e){// Close dialog boxthis.Close();}}}

Vea tambin ConceptosInformacin general sobre el control Popup Otros recursosDialog Box Sample ColorPicker Custom Control Sample