Éditeur déroulant personnalisé pour la configuration d’adaptateurs
Le code de l’éditeur personnalisé montre un éditeur dérivé de la classe System.Drawing.Design.UITypeEditor qui affiche une zone de texte déroulante permettant d’entrer un mot de passe. La substitution GetEditStyle retourne UIEditorEditStyle.DropDown pour indiquer un sous-contrôle déroulant. Les méthodes de service DropDownControl et CloseDropDown gèrent le contrôle créé avec CreatePassword.
Le code suivant correspond à la définition de classe pour l'éditeur déroulant personnalisé :
/*************************************************************************
* Copyright (c) 1999-2004 Microsoft Corporation. All rights reserved. *
* *
* THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY *
* KIND, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE *
* IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR *
* PURPOSE. THE ENTIRE RISK OF USE OR RESULTS IN CONNECTION WITH THE USE *
* OF THIS CODE AND INFORMATION REMAINS WITH THE USER. *
*************************************************************************/
using System;
using System.ComponentModel;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using System.Security;
using System.Security.Permissions;
using Microsoft.BizTalk.Adapter.Framework;
using Microsoft.BizTalk.Adapter.Framework.Forms;
namespace AdapterManagement.ComponentModel {
/// <summary>
/// PasswordUITypeEditor implements a user interface for acquiring passwords
/// within a visual designer.
/// </summary>
public class PasswordUITypeEditor : UITypeEditor {
public const char PasswordChar = '\u25cf';
private IWindowsFormsEditorService _service = null;
private TextBox _password = null;
[SecurityPermissionAttribute(SecurityAction.LinkDemand)]
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) {
if (null != context && null != context.Instance) {
return UITypeEditorEditStyle.DropDown;
}
return base.GetEditStyle(context);
}
[SecurityPermissionAttribute(SecurityAction.LinkDemand)]
public override object EditValue(ITypeDescriptorContext context,
IServiceProvider provider,
object value) {
if (null != context && null != context.Instance && null != provider) {
this._service = (IWindowsFormsEditorService) provider.GetService
(typeof(IWindowsFormsEditorService));
if (null != this._service) {
this._password = CreatePassword();
this._service.DropDownControl(this._password);
value = this._password.Text;
}
}
return value;
}
private TextBox CreatePassword () {
TextBox password = new TextBox();
password.PasswordChar = PasswordUITypeEditor.PasswordChar;
password.Leave += new EventHandler(password_Leave);
}
private void password_Leave(object sender, EventArgs e) {
if (null != this._service) {
this._service.CloseDropDown();
}
}
} // PasswordUITypeEditor
} // Microsoft.BizTalk.Adapter.Framework.ComponentModel
Voir aussi
Concepteur personnalisé pour la configuration d’adaptateurs
Éditeur de boîtes de dialogue modales personnalisé pour la configuration d’adaptateurs
Convertisseur de type personnalisé pour la configuration d’adaptateurs
Composants de configuration avancée pour les adaptateurs