Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / ListBoxDesigner.cs / 1 / ListBoxDesigner.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode", Scope="member", Target="System.Windows.Forms.Design.ListBoxDesigner..ctor()")]
namespace System.Windows.Forms.Design {
using System.Design;
using System.Runtime.InteropServices;
using System.ComponentModel;
using System.Diagnostics;
using System;
using System.ComponentModel.Design;
using System.Windows.Forms;
using System.Drawing;
using System.Collections;
///
///
/// This class handles all design time behavior for the list box class.
/// It adds a sample item to the list box at design time.
///
internal class ListBoxDesigner : ControlDesigner {
private DesignerActionListCollection _actionLists;
///
///
/// Destroys this designer.
///
protected override void Dispose(bool disposing) {
if (disposing) {
// Now, hook the component rename event so we can update the text in the
// list box.
//
IComponentChangeService cs = (IComponentChangeService)GetService(typeof(IComponentChangeService));
if (cs != null) {
cs.ComponentRename -= new ComponentRenameEventHandler(this.OnComponentRename);
cs.ComponentChanged -= new ComponentChangedEventHandler(this.OnComponentChanged);
}
}
base.Dispose(disposing);
}
///
///
/// Called by the host when we're first initialized.
///
public override void Initialize(IComponent component) {
base.Initialize(component);
AutoResizeHandles = true;
// Now, hook the component rename event so we can update the text in the
// list box.
//
IComponentChangeService cs = (IComponentChangeService)GetService(typeof(IComponentChangeService));
if (cs != null) {
cs.ComponentRename += new ComponentRenameEventHandler(this.OnComponentRename);
cs.ComponentChanged += new ComponentChangedEventHandler(this.OnComponentChanged);
}
}
public override void InitializeNewComponent(IDictionary defaultValues) {
base.InitializeNewComponent(defaultValues);
// in Whidbey, formattingEnabled is true
((ListBox) this.Component).FormattingEnabled = true;
// VSWhidbey 497239 - Setting FormattingEnabled clears the text we set in
// OnCreateHandle so let's set it here again. We need to keep setting the text in
// OnCreateHandle, otherwise we introduce VSWhidbey 498162.
PropertyDescriptor nameProp = TypeDescriptor.GetProperties(Component)["Name"];
if (nameProp != null) {
UpdateControlName(nameProp.GetValue(Component).ToString());
}
}
///
///
/// Raised when a component's name changes. Here we update the contents of the list box
/// if we are displaying the component's name in it.
///
private void OnComponentRename(object sender, ComponentRenameEventArgs e) {
if (e.Component == Component) {
UpdateControlName(e.NewName);
}
}
///
///
/// Raised when ComponentChanges. We listen to this to check if the "Items" propertychanged.
/// and if so .. then update the Text within the ListBox.
///
private void OnComponentChanged(object sender, ComponentChangedEventArgs e) {
if (e.Component == Component && e.Member != null && e.Member.Name == "Items") {
PropertyDescriptor nameProp = TypeDescriptor.GetProperties(Component)["Name"];
if (nameProp != null) {
UpdateControlName(nameProp.GetValue(Component).ToString());
}
}
}
///
///
/// This is called immediately after the control handle has been created.
///
protected override void OnCreateHandle() {
base.OnCreateHandle();
PropertyDescriptor nameProp = TypeDescriptor.GetProperties(Component)["Name"];
if (nameProp != null) {
UpdateControlName(nameProp.GetValue(Component).ToString());
}
}
///
///
/// Updates the name being displayed on this control. This will do nothing if
/// the control has items in it.
///
private void UpdateControlName(string name) {
ListBox lb = (ListBox)Control;
if (lb.IsHandleCreated && lb.Items.Count == 0) {
NativeMethods.SendMessage(lb.Handle, NativeMethods.LB_RESETCONTENT, 0, 0);
NativeMethods.SendMessage(lb.Handle, NativeMethods.LB_ADDSTRING, 0, name);
}
}
public override DesignerActionListCollection ActionLists {
get {
if (_actionLists == null) {
_actionLists = new DesignerActionListCollection();
if (this.Component is CheckedListBox) {
_actionLists.Add(new ListControlUnboundActionList(this));
} else {
_actionLists.Add(new ListControlBoundActionList(this));
}
}
return _actionLists;
}
}
}
internal class ListControlUnboundActionList : DesignerActionList {
private ComponentDesigner _designer;
public ListControlUnboundActionList(ComponentDesigner designer) : base(designer.Component) {
_designer = designer;
}
public void InvokeItemsDialog() {
EditorServiceContext.EditValue(_designer, Component, "Items");
}
public override DesignerActionItemCollection GetSortedActionItems() {
DesignerActionItemCollection returnItems = new DesignerActionItemCollection();
returnItems.Add(new DesignerActionMethodItem(this, "InvokeItemsDialog",
SR.GetString(SR.ListControlUnboundActionListEditItemsDisplayName),
SR.GetString(SR.ItemsCategoryName),
SR.GetString(SR.ListControlUnboundActionListEditItemsDescription), true));
return returnItems;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ReadOnlyCollectionBase.cs
- TypeBinaryExpression.cs
- Zone.cs
- CaseExpr.cs
- RecognizerInfo.cs
- BrowsableAttribute.cs
- ObjectDisposedException.cs
- OuterProxyWrapper.cs
- TabletDeviceInfo.cs
- ConnectionManagementSection.cs
- ErrorView.xaml.cs
- ClosableStream.cs
- MailBnfHelper.cs
- NonClientArea.cs
- SymLanguageVendor.cs
- Set.cs
- DataSourceXmlAttributeAttribute.cs
- ThicknessConverter.cs
- WebPartConnection.cs
- ResXResourceSet.cs
- FrugalMap.cs
- DBConcurrencyException.cs
- EventWaitHandle.cs
- QilLiteral.cs
- ListItemConverter.cs
- ScriptComponentDescriptor.cs
- TraceListener.cs
- GPStream.cs
- Membership.cs
- DesignerTransaction.cs
- PointKeyFrameCollection.cs
- BamlTreeMap.cs
- SimpleWorkerRequest.cs
- MsmqUri.cs
- PenThreadWorker.cs
- FloaterParaClient.cs
- RegexReplacement.cs
- GridViewCancelEditEventArgs.cs
- ToolStripCodeDomSerializer.cs
- DesignerForm.cs
- ToolStripRenderer.cs
- ClientFormsIdentity.cs
- ChannelToken.cs
- DataBoundLiteralControl.cs
- Classification.cs
- DisableDpiAwarenessAttribute.cs
- ReflectionPermission.cs
- ConfigurationSectionGroupCollection.cs
- ToolboxBitmapAttribute.cs
- SymDocumentType.cs
- SQLUtility.cs
- PropertySourceInfo.cs
- TreeViewItemAutomationPeer.cs
- TemplateKeyConverter.cs
- StorageSetMapping.cs
- ToolstripProfessionalRenderer.cs
- ActiveXHost.cs
- CoreSwitches.cs
- SoapExtensionImporter.cs
- CheckBoxAutomationPeer.cs
- TextWriterEngine.cs
- XmlNodeChangedEventManager.cs
- PtsPage.cs
- InvalidPropValue.cs
- CompressedStack.cs
- XamlPathDataSerializer.cs
- ToolStripItem.cs
- BindableAttribute.cs
- BrowsableAttribute.cs
- ProfileParameter.cs
- SoundPlayer.cs
- InfiniteTimeSpanConverter.cs
- RecordBuilder.cs
- ConfigPathUtility.cs
- BamlLocalizationDictionary.cs
- DecimalFormatter.cs
- HelpExampleGenerator.cs
- XappLauncher.cs
- GreenMethods.cs
- ScriptBehaviorDescriptor.cs
- ConfigurationStrings.cs
- DataGridColumnCollection.cs
- EFColumnProvider.cs
- DataGridBoolColumn.cs
- DeploymentExceptionMapper.cs
- SectionXmlInfo.cs
- RuntimeCompatibilityAttribute.cs
- AsymmetricKeyExchangeFormatter.cs
- SlotInfo.cs
- errorpatternmatcher.cs
- AuthStoreRoleProvider.cs
- DataControlButton.cs
- AsyncResult.cs
- COM2IPerPropertyBrowsingHandler.cs
- HierarchicalDataSourceIDConverter.cs
- HebrewCalendar.cs
- SessionStateContainer.cs
- SessionEndingEventArgs.cs
- LinqDataSourceStatusEventArgs.cs
- ObjectResult.cs