Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WinForms / System / WinForms / Design / BorderSidesEditor.cs / 1 / BorderSidesEditor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.Design { using System; using System.Design; using System.ComponentModel; using System.Diagnostics; using System.Drawing.Design; using System.Windows.Forms; using System.Windows.Forms.ComponentModel; using System.Windows.Forms.Design; ////// /// /// Provides an editor for setting the ToolStripStatusLabel BorderSides property.. /// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)] public class BorderSidesEditor : UITypeEditor { private BorderSidesEditorUI borderSidesEditorUI; ////// /// Edits the given object value using the editor style provided by BorderSidesEditor.GetEditStyle. /// // This should be okay since System.Design only runs in FullTrust. // SECREVIEW: Isn't that true [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (provider != null) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { if (this.borderSidesEditorUI == null) { this.borderSidesEditorUI = new BorderSidesEditorUI(this); } this.borderSidesEditorUI.Start(edSvc, value); edSvc.DropDownControl(this.borderSidesEditorUI); if (this.borderSidesEditorUI.Value != null) { value = this.borderSidesEditorUI.Value; } this.borderSidesEditorUI.End(); } } return value; } ////// /// Gets the editing style of the Edit method. If the method /// is not supported, this will return UITypeEditorEditStyle.None. /// // This should be okay since System.Design only runs in FullTrust. // SECREVIEW: Isn't that true [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2123:OverrideLinkDemandsShouldBeIdenticalToBase")] public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.DropDown; } ////// Editor UI for the BorderSides editor. /// private class BorderSidesEditorUI : UserControl { private BorderSidesEditor editor; private IWindowsFormsEditorService edSvc; private object originalValue, currentValue; private bool updateCurrentValue = false; private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; private System.Windows.Forms.CheckBox allCheckBox; private System.Windows.Forms.CheckBox noneCheckBox; private System.Windows.Forms.CheckBox topCheckBox; private System.Windows.Forms.CheckBox bottomCheckBox; private System.Windows.Forms.CheckBox leftCheckBox; private System.Windows.Forms.CheckBox rightCheckBox; private System.Windows.Forms.Label splitterLabel; private bool allChecked = false; private bool noneChecked = false; ///public BorderSidesEditorUI(BorderSidesEditor editor) { this.editor = editor; End(); InitializeComponent(); this.Size = PreferredSize; } /// /// /// Allows someone else to close our dropdown. /// public IWindowsFormsEditorService EditorService { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] get { return this.edSvc; } } ////// /// Retrns the current value of BorderSides, if nothing is selected returns BorderSides.None. /// public object Value { get { //Return the new value.... return this.currentValue; } } ///public void End() { this.edSvc = null; this.originalValue = null; this.currentValue = null; this.updateCurrentValue = false; } /// /// /// The first checkBox (allCheckBox) gets the focus by default. /// protected override void OnGotFocus(EventArgs e) { base.OnGotFocus(e); this.noneCheckBox.Focus(); } ///private void InitializeComponent(){ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BorderSidesEditor)); this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); this.noneCheckBox = new System.Windows.Forms.CheckBox(); this.allCheckBox = new System.Windows.Forms.CheckBox(); this.topCheckBox = new System.Windows.Forms.CheckBox(); this.bottomCheckBox = new System.Windows.Forms.CheckBox(); this.rightCheckBox = new System.Windows.Forms.CheckBox(); this.leftCheckBox = new System.Windows.Forms.CheckBox(); this.splitterLabel = new System.Windows.Forms.Label(); this.tableLayoutPanel1.SuspendLayout(); this.SuspendLayout(); // // tableLayoutPanel1 // resources.ApplyResources(this.tableLayoutPanel1, "tableLayoutPanel1"); this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.tableLayoutPanel1.BackColor = System.Drawing.SystemColors.Window; this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); this.tableLayoutPanel1.Controls.Add(this.noneCheckBox, 0, 0); this.tableLayoutPanel1.Controls.Add(this.allCheckBox, 0, 2); this.tableLayoutPanel1.Controls.Add(this.topCheckBox, 0, 3); this.tableLayoutPanel1.Controls.Add(this.bottomCheckBox, 0, 4); this.tableLayoutPanel1.Controls.Add(this.rightCheckBox, 0, 6); this.tableLayoutPanel1.Controls.Add(this.leftCheckBox, 0, 5); this.tableLayoutPanel1.Controls.Add(this.splitterLabel, 0, 1); this.tableLayoutPanel1.Name = "tableLayoutPanel1"; this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); // // noneCheckBox // resources.ApplyResources(this.noneCheckBox, "noneCheckBox"); this.noneCheckBox.Name = "noneCheckBox"; this.noneCheckBox.Margin = new System.Windows.Forms.Padding(3, 3, 3, 1); // // allCheckBox // resources.ApplyResources(this.allCheckBox, "allCheckBox"); this.allCheckBox.Name = "allCheckBox"; this.allCheckBox.Margin = new System.Windows.Forms.Padding(3, 3, 3, 1); // // topCheckBox // resources.ApplyResources(this.topCheckBox, "topCheckBox"); this.topCheckBox.Margin = new System.Windows.Forms.Padding(20, 1, 3, 1); this.topCheckBox.Name = "topCheckBox"; // // bottomCheckBox // resources.ApplyResources(this.bottomCheckBox, "bottomCheckBox"); this.bottomCheckBox.Margin = new System.Windows.Forms.Padding(20, 1, 3, 1); this.bottomCheckBox.Name = "bottomCheckBox"; // // rightCheckBox // resources.ApplyResources(this.rightCheckBox, "rightCheckBox"); this.rightCheckBox.Margin = new System.Windows.Forms.Padding(20, 1, 3, 1); this.rightCheckBox.Name = "rightCheckBox"; // // leftCheckBox // resources.ApplyResources(this.leftCheckBox, "leftCheckBox"); this.leftCheckBox.Margin = new System.Windows.Forms.Padding(20, 1, 3, 1); this.leftCheckBox.Name = "leftCheckBox"; // // splitterLabel // resources.ApplyResources(this.splitterLabel, "splitterLabel"); this.splitterLabel.BackColor = System.Drawing.SystemColors.ControlDark; this.splitterLabel.Name = "splitterLabel"; // // Control // resources.ApplyResources(this, "$this"); this.Controls.Add(this.tableLayoutPanel1); this.Padding = new System.Windows.Forms.Padding(1,1,1,1); this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.AutoScaleDimensions = new System.Drawing.SizeF(6F,13F); this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.ResumeLayout(false); this.PerformLayout(); //Events this.rightCheckBox.CheckedChanged += new System.EventHandler(this.rightCheckBox_CheckedChanged); this.leftCheckBox.CheckedChanged += new System.EventHandler(this.leftCheckBox_CheckedChanged); this.bottomCheckBox.CheckedChanged += new System.EventHandler(this.bottomCheckBox_CheckedChanged); this.topCheckBox.CheckedChanged += new System.EventHandler(this.topCheckBox_CheckedChanged); this.noneCheckBox.CheckedChanged += new System.EventHandler(this.noneCheckBox_CheckedChanged); this.allCheckBox.CheckedChanged += new System.EventHandler(this.allCheckBox_CheckedChanged); this.noneCheckBox.Click += new System.EventHandler(this.noneCheckBoxClicked); this.allCheckBox.Click += new System.EventHandler(this.allCheckBoxClicked); } /// /// /// CheckBox CheckedChanged event.. allows selecting/Deselecting proper values. /// private void rightCheckBox_CheckedChanged(object sender, System.EventArgs e) { CheckBox senderCheckBox = sender as CheckBox; if (senderCheckBox.Checked) { this.noneCheckBox.Checked = false; } else // this is turned off.... { if (this.allCheckBox.Checked) { this.allCheckBox.Checked = false; } } UpdateCurrentValue(); } ////// /// CheckBox CheckedChanged event.. allows selecting/Deselecting proper values. /// private void leftCheckBox_CheckedChanged(object sender, System.EventArgs e) { CheckBox senderCheckBox = sender as CheckBox; if (senderCheckBox.Checked) { this.noneCheckBox.Checked = false; } else // this is turned off.... { if (this.allCheckBox.Checked) { this.allCheckBox.Checked = false; } } UpdateCurrentValue(); } ////// /// CheckBox CheckedChanged event.. allows selecting/Deselecting proper values. /// private void bottomCheckBox_CheckedChanged(object sender, System.EventArgs e) { CheckBox senderCheckBox = sender as CheckBox; if (senderCheckBox.Checked) { this.noneCheckBox.Checked = false; } else // this is turned off.... { if (this.allCheckBox.Checked) { this.allCheckBox.Checked = false; } } UpdateCurrentValue(); } ////// /// CheckBox CheckedChanged event.. allows selecting/Deselecting proper values. /// private void topCheckBox_CheckedChanged(object sender, System.EventArgs e) { CheckBox senderCheckBox = sender as CheckBox; if (senderCheckBox.Checked) { this.noneCheckBox.Checked = false; } else // this is turned off.... { if (this.allCheckBox.Checked) { this.allCheckBox.Checked = false; } } UpdateCurrentValue(); } ////// /// CheckBox CheckedChanged event.. allows selecting/Deselecting proper values. /// private void noneCheckBox_CheckedChanged(object sender, System.EventArgs e) { CheckBox senderCheckBox = sender as CheckBox; if (senderCheckBox.Checked) { this.allCheckBox.Checked = false; this.topCheckBox.Checked = false; this.bottomCheckBox.Checked = false; this.leftCheckBox.Checked = false; this.rightCheckBox.Checked = false; } UpdateCurrentValue(); } ////// /// CheckBox CheckedChanged event.. allows selecting/Deselecting proper values. /// private void allCheckBox_CheckedChanged(object sender, System.EventArgs e) { CheckBox senderCheckBox = sender as CheckBox; if (senderCheckBox.Checked) { this.noneCheckBox.Checked = false; this.topCheckBox.Checked = true; this.bottomCheckBox.Checked = true; this.leftCheckBox.Checked = true; this.rightCheckBox.Checked = true; } UpdateCurrentValue(); } ////// /// Click event. /// private void noneCheckBoxClicked(object sender, System.EventArgs e) { if (noneChecked) { this.noneCheckBox.Checked = true; } } ////// /// Click event. /// private void allCheckBoxClicked(object sender, System.EventArgs e) { if (allChecked) { this.allCheckBox.Checked = true; } } ////// /// Allows to reset the state and start afresh. /// private void ResetCheckBoxState() { this.allCheckBox.Checked = false; this.noneCheckBox.Checked = false; this.topCheckBox.Checked = false; this.bottomCheckBox.Checked = false; this.leftCheckBox.Checked = false; this.rightCheckBox.Checked = false; } ////// /// Allows to select proper values.. /// private void SetCheckBoxCheckState(ToolStripStatusLabelBorderSides sides) { ResetCheckBoxState(); if ((sides & ToolStripStatusLabelBorderSides.All) == ToolStripStatusLabelBorderSides.All) { this.allCheckBox.Checked = true; this.topCheckBox.Checked = true; this.bottomCheckBox.Checked = true; this.leftCheckBox.Checked = true; this.rightCheckBox.Checked = true; this.allCheckBox.Checked = true; } else { this.noneCheckBox.Checked = ((sides & ToolStripStatusLabelBorderSides.None) == ToolStripStatusLabelBorderSides.None); this.topCheckBox.Checked = ((sides & ToolStripStatusLabelBorderSides.Top) == ToolStripStatusLabelBorderSides.Top); this.bottomCheckBox.Checked = ((sides & ToolStripStatusLabelBorderSides.Bottom) == ToolStripStatusLabelBorderSides.Bottom); this.leftCheckBox.Checked = ((sides & ToolStripStatusLabelBorderSides.Left) == ToolStripStatusLabelBorderSides.Left); this.rightCheckBox.Checked = ((sides & ToolStripStatusLabelBorderSides.Right) == ToolStripStatusLabelBorderSides.Right); } } ////// /// Triggered whenever the user drops down the editor. /// public void Start(IWindowsFormsEditorService edSvc, object value) { Debug.Assert(edSvc != null); Debug.Assert(value is ToolStripStatusLabelBorderSides); this.edSvc = edSvc; this.originalValue = this.currentValue = value; ToolStripStatusLabelBorderSides currentSides = (ToolStripStatusLabelBorderSides) value; SetCheckBoxCheckState(currentSides); this.updateCurrentValue = true; } ////// Update the current value based on the state of the UI controls. /// private void UpdateCurrentValue() { if (!this.updateCurrentValue) { return; } ToolStripStatusLabelBorderSides valueSide = ToolStripStatusLabelBorderSides.None; if (this.allCheckBox.Checked) { valueSide |= ToolStripStatusLabelBorderSides.All; this.currentValue = valueSide; this.allChecked = true; this.noneChecked = false; return; } if (this.noneCheckBox.Checked) { valueSide |= ToolStripStatusLabelBorderSides.None; } if (this.topCheckBox.Checked) { valueSide |= ToolStripStatusLabelBorderSides.Top; } if (this.bottomCheckBox.Checked) { valueSide |= ToolStripStatusLabelBorderSides.Bottom; } if (this.leftCheckBox.Checked) { valueSide |= ToolStripStatusLabelBorderSides.Left; } if (this.rightCheckBox.Checked) { valueSide |= ToolStripStatusLabelBorderSides.Right; } if (valueSide == ToolStripStatusLabelBorderSides.None) { this.allChecked = false; this.noneChecked = true; this.noneCheckBox.Checked = true; } if (valueSide == (ToolStripStatusLabelBorderSides.Left | ToolStripStatusLabelBorderSides.Right | ToolStripStatusLabelBorderSides.Top |ToolStripStatusLabelBorderSides.Bottom)) { this.allChecked = true; this.noneChecked = false; this.allCheckBox.Checked = true; } this.currentValue = valueSide; } } } } // 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
- DatagridviewDisplayedBandsData.cs
- LinqDataSourceStatusEventArgs.cs
- ConnectionStringSettings.cs
- TypeUtils.cs
- XPathPatternParser.cs
- EntityTemplateFactory.cs
- NetworkInformationException.cs
- InboundActivityHelper.cs
- NativeActivityAbortContext.cs
- BinaryObjectInfo.cs
- CodeAttributeArgumentCollection.cs
- CodeGenHelper.cs
- ReservationNotFoundException.cs
- XmlSchemaException.cs
- HttpHandlerActionCollection.cs
- CalendarDay.cs
- RegularExpressionValidator.cs
- LocalBuilder.cs
- TransformDescriptor.cs
- Matrix3DStack.cs
- DesigntimeLicenseContextSerializer.cs
- RemotingClientProxy.cs
- RoamingStoreFileUtility.cs
- DesignTableCollection.cs
- ConstNode.cs
- ContainerControl.cs
- TextEditorCopyPaste.cs
- NetPeerTcpBinding.cs
- RoutedEventArgs.cs
- FixUp.cs
- ToolConsole.cs
- DataRecordInternal.cs
- SourceSwitch.cs
- HashRepartitionEnumerator.cs
- HScrollBar.cs
- CommonProperties.cs
- SingleObjectCollection.cs
- XmlCharType.cs
- InputScopeAttribute.cs
- ContentWrapperAttribute.cs
- MouseOverProperty.cs
- AspCompat.cs
- StateRuntime.cs
- ObjectTokenCategory.cs
- TextSelectionHelper.cs
- ButtonFieldBase.cs
- DockingAttribute.cs
- EntityClientCacheEntry.cs
- TextElement.cs
- XmlSchemaCompilationSettings.cs
- ApplicationGesture.cs
- EntryWrittenEventArgs.cs
- ISAPIRuntime.cs
- WebReferencesBuildProvider.cs
- _NestedMultipleAsyncResult.cs
- DataStreams.cs
- DataServiceRequestException.cs
- StringInfo.cs
- IOThreadTimer.cs
- IImplicitResourceProvider.cs
- ProfessionalColors.cs
- METAHEADER.cs
- HtmlInputFile.cs
- Overlapped.cs
- RadioButtonList.cs
- FormViewInsertEventArgs.cs
- CompressStream.cs
- CodeDomDesignerLoader.cs
- XmlCodeExporter.cs
- WindowsSlider.cs
- LocalizableAttribute.cs
- MethodExpr.cs
- BinaryFormatter.cs
- MenuCommand.cs
- CodePageUtils.cs
- MembershipUser.cs
- SizeF.cs
- ManagedWndProcTracker.cs
- FontUnitConverter.cs
- PropertyGridEditorPart.cs
- Track.cs
- MethodToken.cs
- EpmTargetTree.cs
- TagPrefixAttribute.cs
- PagerStyle.cs
- DataStreamFromComStream.cs
- Geometry3D.cs
- ResolveCompletedEventArgs.cs
- dataobject.cs
- RedirectionProxy.cs
- CrossAppDomainChannel.cs
- SynchronizedReadOnlyCollection.cs
- PerformanceCounterPermission.cs
- InvokeHandlers.cs
- LayoutTableCell.cs
- odbcmetadatacolumnnames.cs
- ManifestResourceInfo.cs
- SynchronizationLockException.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- SeparatorAutomationPeer.cs