using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using DevComponents.DotNetBar.Controls; using DevComponents.DotNetBar.Rendering; namespace DevComponents.DotNetBar { /// /// Summary description for ComboBoxItem. /// [System.ComponentModel.ToolboxItem(false), DefaultEvent("Click"), System.ComponentModel.DesignTimeVisible(false), Designer("DevComponents.DotNetBar.Design.ComboBoxItemDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")] public class ComboBoxItem:ImageItem,IPersonalizedMenuItem { private Controls.ComboBoxEx m_ComboBox=null; private int m_ComboWidth=64; private bool m_MouseOver=false; //private string m_ControlText=""; private bool m_AlwaysShowCaption; private bool m_FontCombo=false; // IPersonalizedMenuItem Implementation private eMenuVisibility m_MenuVisibility=eMenuVisibility.VisibleAlways; private bool m_RecentlyUsed=false; internal bool _CopyInProgress=false; private bool m_PreventEnterBeep=false; /// /// Occurs when underlining control ComboBox.Text property has changed. /// public event EventHandler ComboBoxTextChanged; /// /// Occurs when selected item on combo box has changed. /// public event EventHandler SelectedIndexChanged; /// /// Creates new instance of ComboBoxItem. /// public ComboBoxItem():this("","") {} /// /// Creates new instance of ComboBoxItem and assigns item name. /// /// Item Name. public ComboBoxItem(string sName):this(sName,""){} /// /// Creates new instance of ComboBoxItem and assigns item name and item text. /// /// Item Name /// Item Text. public ComboBoxItem(string sName, string ItemText):base(sName,ItemText) { CreateComboBox(); m_ComboWidth=64; m_SupportedOrientation=eSupportedOrientation.Horizontal; this.IsAccessible=true; this.AccessibleRole = AccessibleRole.ComboBox; } private void CreateComboBox() { if(m_ComboBox!=null) { m_ComboBox.Dispose(); m_ComboBox=null; } m_ComboBox = new Controls.ComboBoxEx(); m_ComboBox.IsStandalone = false; m_ComboBox.TabStop = false; m_ComboBox.TabIndex = 9999; m_ComboBox.Style = this.Style; m_ComboBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; m_ComboBox.IntegralHeight = false; //m_ComboBox.ItemHeight = 13; m_ComboBox.ThemeAware = false; m_ComboBox.Visible = false; m_ComboBox.Text = this.Text; m_ComboBox.SelectionStart = 0; m_ComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; m_ComboBox.LostFocus += new EventHandler(this.ComboLostFocus); m_ComboBox.GotFocus += new EventHandler(this.ComboGotFocus); m_ComboBox.MouseHover += new EventHandler(this.ComboMouseHover); m_ComboBox.MouseEnter += new EventHandler(this.ComboMouseEnter); m_ComboBox.MouseLeave += new EventHandler(this.ComboMouseLeave); m_ComboBox.VisibleChanged += new EventHandler(ComboBoxVisibleChanged); m_ComboBox.DropDownChange += new Controls.ComboBoxEx.OnDropDownChangeEventHandler(this.ComboDropDownChange); m_ComboBox.TextChanged += new EventHandler(this.InternalComboTextChanged); m_ComboBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComboKeyDown); m_ComboBox.SelectedIndexChanged += new System.EventHandler(this.ComboSelChanged); m_ComboBox.PreventEnterBeep = m_PreventEnterBeep; m_ComboBox.ParentItem = this; if(m_FontCombo) m_ComboBox.LoadFonts(); if(this.ContainerControl!=null) { System.Windows.Forms.Control objCtrl=this.ContainerControl as System.Windows.Forms.Control; if(objCtrl!=null) { objCtrl.Controls.Add(m_ComboBox); m_ComboBox.Refresh(); } } if(this.Displayed) { m_ComboBox.Visible=true; } } public override BaseItem Copy() { ComboBoxItem objCopy=new ComboBoxItem(this.Name); this.CopyToItem(objCopy); objCopy.DropDownStyle=this.DropDownStyle; objCopy.AlwaysShowCaption=this.AlwaysShowCaption; objCopy.FontCombo=this.FontCombo; objCopy.ItemHeight=this.ItemHeight; objCopy.Caption = this.Caption; return objCopy; } protected override void CopyToItem(BaseItem copy) { ((ComboBoxItem)copy)._CopyInProgress=true; try { ComboBoxItem objCopy=copy as ComboBoxItem; base.CopyToItem(objCopy); objCopy.ComboWidth=m_ComboWidth; objCopy.FontCombo=m_FontCombo; objCopy.PreventEnterBeep=m_PreventEnterBeep; if (m_ComboBox != null) { objCopy.DisplayMember = m_ComboBox.DisplayMember; Controls.ComboBoxEx cb = objCopy.ComboBoxEx; if (!m_FontCombo) { foreach (object o in m_ComboBox.Items) cb.Items.Add(o); } cb.SelectedIndex = m_ComboBox.SelectedIndex; } } finally { ((ComboBoxItem)copy)._CopyInProgress=false; } } protected override void Dispose(bool disposing) { base.Dispose(disposing); // Control gets disposed by the parent control it is added to //if (m_ComboBox != null) //{ // if (m_ComboBox.Parent == null && !m_ComboBox.IsDisposed) // m_ComboBox.Dispose(); //} } protected override System.Windows.Forms.AccessibleObject CreateAccessibilityInstance() { return m_ComboBox.AccessibilityObject; } /// /// Gets or sets the accessible role of the item. /// [Browsable(true), Category("Accessibility"), Description("Gets or sets the accessible role of the item."), DefaultValue(System.Windows.Forms.AccessibleRole.ComboBox)] public override System.Windows.Forms.AccessibleRole AccessibleRole { get { return base.AccessibleRole; } set { base.AccessibleRole = value; } } protected internal override void Serialize(ItemSerializationContext context) { base.Serialize(context); System.Xml.XmlElement ThisItem = context.ItemXmlElement; ThisItem.SetAttribute("ComboWidth",System.Xml.XmlConvert.ToString(m_ComboWidth)); ThisItem.SetAttribute("FontCombo",System.Xml.XmlConvert.ToString(m_FontCombo)); ThisItem.SetAttribute("MenuVisibility",System.Xml.XmlConvert.ToString((int)m_MenuVisibility)); ThisItem.SetAttribute("RecentlyUsed",System.Xml.XmlConvert.ToString(m_RecentlyUsed)); ThisItem.SetAttribute("DropDownStyle",System.Xml.XmlConvert.ToString((int)m_ComboBox.DropDownStyle)); //ThisItem.SetAttribute("CText",m_ControlText); ThisItem.SetAttribute("ThemeAware",System.Xml.XmlConvert.ToString(m_ComboBox.ThemeAware)); ThisItem.SetAttribute("AlwaysShowCaption",System.Xml.XmlConvert.ToString(m_AlwaysShowCaption)); ThisItem.SetAttribute("ItemHeight",System.Xml.XmlConvert.ToString(m_ComboBox.ItemHeight)); if(m_ComboBox.DisplayMember!="") ThisItem.SetAttribute("DisplayMembers", m_ComboBox.DisplayMember); if(m_PreventEnterBeep) ThisItem.SetAttribute("nobeep",System.Xml.XmlConvert.ToString(m_PreventEnterBeep)); if(!m_FontCombo && m_ComboBox.Items.Count>0) { System.Xml.XmlElement xmlItems=ThisItem.OwnerDocument.CreateElement("cbitems"); ThisItem.AppendChild(xmlItems); foreach(object item in m_ComboBox.Items) { DevComponents.Editors.ComboItem ci=item as DevComponents.Editors.ComboItem; if(ci!=null) { System.Xml.XmlElement xmlChild=ThisItem.OwnerDocument.CreateElement("ci"); if(!ci.BackColor.IsEmpty) xmlChild.SetAttribute("bc",BarFunctions.ColorToString(ci.BackColor)); if(ci.FontName!="") xmlChild.SetAttribute("fn",ci.FontName); if(ci.FontSize!=8) xmlChild.SetAttribute("fs",System.Xml.XmlConvert.ToString(ci.FontSize)); xmlChild.SetAttribute("fy",System.Xml.XmlConvert.ToString((int)ci.FontStyle)); if(!ci.ForeColor.IsEmpty) xmlChild.SetAttribute("fc",BarFunctions.ColorToString(ci.ForeColor)); BarFunctions.SerializeImage(ci.Image,xmlChild); if(ci.ImageIndex>=0) xmlChild.SetAttribute("img",System.Xml.XmlConvert.ToString(ci.ImageIndex)); if(ci.ImagePosition!=System.Windows.Forms.HorizontalAlignment.Left) xmlChild.SetAttribute("ip",System.Xml.XmlConvert.ToString((int)ci.ImagePosition)); xmlChild.SetAttribute("text",ci.Text); xmlChild.SetAttribute("ta",System.Xml.XmlConvert.ToString((int)ci.TextAlignment)); xmlChild.SetAttribute("tla",System.Xml.XmlConvert.ToString((int)ci.TextLineAlignment)); if(m_ComboBox.SelectedItem==item) xmlChild.SetAttribute("selected","1"); xmlItems.AppendChild(xmlChild); } else { System.Xml.XmlElement xmlChild=ThisItem.OwnerDocument.CreateElement("co"); xmlChild.InnerText=item.ToString(); xmlItems.AppendChild(xmlChild); if(m_ComboBox.SelectedItem==item) xmlChild.SetAttribute("selected","1"); } } } } public override void Deserialize(ItemSerializationContext context) { base.Deserialize(context); System.Xml.XmlElement ItemXmlSource = context.ItemXmlElement; m_ComboWidth=System.Xml.XmlConvert.ToInt32(ItemXmlSource.GetAttribute("ComboWidth")); m_FontCombo=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("FontCombo")); m_MenuVisibility=(eMenuVisibility)System.Xml.XmlConvert.ToInt32(ItemXmlSource.GetAttribute("MenuVisibility")); m_RecentlyUsed=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("RecentlyUsed")); if(ItemXmlSource.HasAttribute("DropDownStyle")) m_ComboBox.DropDownStyle=(System.Windows.Forms.ComboBoxStyle)System.Xml.XmlConvert.ToInt32(ItemXmlSource.GetAttribute("DropDownStyle")); if(ItemXmlSource.HasAttribute("CText")) this.Text=ItemXmlSource.GetAttribute("CText"); if(ItemXmlSource.HasAttribute("ThemeAware")) m_ComboBox.ThemeAware=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("ThemeAware")); else m_ComboBox.ThemeAware=true; if(ItemXmlSource.HasAttribute("AlwaysShowCaption")) m_AlwaysShowCaption=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("AlwaysShowCaption")); if(ItemXmlSource.HasAttribute("nobeep")) this.PreventEnterBeep=System.Xml.XmlConvert.ToBoolean(ItemXmlSource.GetAttribute("nobeep")); System.Xml.XmlNodeList list=ItemXmlSource.GetElementsByTagName("cbitems"); if(!m_FontCombo && list.Count>0) { foreach(System.Xml.XmlElement xmlChild in list[0].ChildNodes) { if(xmlChild.Name=="ci") { DevComponents.Editors.ComboItem ci=new DevComponents.Editors.ComboItem(); if(xmlChild.HasAttribute("bc")) ci.BackColor=BarFunctions.ColorFromString(xmlChild.GetAttribute("bk")); if(xmlChild.HasAttribute("fn")) ci.FontName=xmlChild.GetAttribute("fn"); if(xmlChild.HasAttribute("fs")) ci.FontSize=System.Xml.XmlConvert.ToSingle(xmlChild.GetAttribute("fs")); if(xmlChild.HasAttribute("fy")) ci.FontStyle=(FontStyle)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("fy")); if(xmlChild.HasAttribute("fc")) ci.ForeColor=BarFunctions.ColorFromString(xmlChild.GetAttribute("fc")); ci.Image=BarFunctions.DeserializeImage(xmlChild); if(xmlChild.HasAttribute("img")) ci.ImageIndex=System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("img")); if(xmlChild.HasAttribute("ip")) ci.ImagePosition=(System.Windows.Forms.HorizontalAlignment)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("ip")); if(xmlChild.HasAttribute("ItemHeight")) m_ComboBox.ItemHeight=System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("ItemHeight")); ci.Text=xmlChild.GetAttribute("text"); ci.TextAlignment=(StringAlignment)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("ta")); ci.TextLineAlignment=(StringAlignment)System.Xml.XmlConvert.ToInt32(xmlChild.GetAttribute("tla")); m_ComboBox.Items.Add(ci); if(xmlChild.HasAttribute("selected") && xmlChild.GetAttribute("selected")=="1") m_ComboBox.SelectedItem=ci; } else if(xmlChild.Name=="co") { m_ComboBox.Items.Add(xmlChild.InnerText); if(xmlChild.HasAttribute("selected") && xmlChild.GetAttribute("selected")=="1") m_ComboBox.SelectedItem=m_ComboBox.Items[m_ComboBox.Items.Count-1]; } } } if(m_FontCombo) m_ComboBox.LoadFonts(); if(m_ComboBox!=null) m_ComboBox.Enabled=this.Enabled; if (ItemXmlSource.HasAttribute("DisplayMembers") && m_ComboBox!=null) m_ComboBox.DisplayMember = ItemXmlSource.GetAttribute("DisplayMembers"); } /// /// Gets or sets whether combo box generates the audible alert when Enter key is pressed. /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Indicates whether combo box generates the audible alert when Enter key is pressed."),System.ComponentModel.DefaultValue(false)] public bool PreventEnterBeep { get { return m_PreventEnterBeep; } set { m_PreventEnterBeep=value; if(m_ComboBox!=null) m_ComboBox.PreventEnterBeep=value; } } private Color _LabelForeColor = Color.Empty; /// /// Gets or sets the text color of the combo box label. /// [Category("Columns"), Description("Indicates color of combo box label.")] public Color LabelForeColor { get { return _LabelForeColor; } set { _LabelForeColor = value; this.Refresh(); } } /// /// Gets whether property should be serialized. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeLabelForeColor() { return !_LabelForeColor.IsEmpty; } /// /// Resets property to its default value. /// [EditorBrowsable(EditorBrowsableState.Never)] public void ResetLabelForeColor() { this.LabelForeColor = Color.Empty; } public override void Paint(ItemPaintArgs pa) { if(this.SuspendLayout) return; System.Drawing.Graphics g=pa.Graphics; Rectangle r=this.DisplayRectangle; Size objImageSize=GetMaxImageSize(); bool bOnMenu = this.IsOnMenu && !(this.Parent is ItemContainer); bool enabled = GetEnabled(pa.ContainerControl); Color textColor = enabled ? SystemColors.ControlText : SystemColors.ControlDark; if (BarFunctions.IsOffice2007Style(this.EffectiveStyle) && pa.Renderer is Rendering.Office2007Renderer && ((Rendering.Office2007Renderer)pa.Renderer).ColorTable.ButtonItemColors.Count > 0) { textColor = enabled ? ((Rendering.Office2007Renderer)pa.Renderer).ColorTable.ButtonItemColors[0].Default.Text : pa.Colors.ItemDisabledText; } if (!_LabelForeColor.IsEmpty) textColor = _LabelForeColor; if(this.Orientation==eOrientation.Horizontal) { if (bOnMenu && (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle))) { objImageSize.Width+=7; r.Width-=objImageSize.Width; r.X+=objImageSize.Width; if(this.IsOnCustomizeMenu) objImageSize.Width+=objImageSize.Height+8; // Draw side bar Rectangle sideRect = new Rectangle(m_Rect.Left, m_Rect.Top, objImageSize.Width, m_Rect.Height); if(this.MenuVisibility==eMenuVisibility.VisibleIfRecentlyUsed && !this.RecentlyUsed) { if(!pa.Colors.MenuUnusedSide2.IsEmpty) { System.Drawing.Drawing2D.LinearGradientBrush gradient=BarFunctions.CreateLinearGradientBrush(sideRect,pa.Colors.MenuUnusedSide,pa.Colors.MenuUnusedSide2,pa.Colors.MenuUnusedSideGradientAngle); g.FillRectangle(gradient,sideRect); gradient.Dispose(); } else g.FillRectangle(new SolidBrush(pa.Colors.MenuUnusedSide), sideRect); } else { if(!pa.Colors.MenuSide2.IsEmpty) { System.Drawing.Drawing2D.LinearGradientBrush gradient = BarFunctions.CreateLinearGradientBrush(sideRect, pa.Colors.MenuSide, pa.Colors.MenuSide2, pa.Colors.MenuSideGradientAngle); g.FillRectangle(gradient, sideRect); gradient.Dispose(); } else g.FillRectangle(new SolidBrush(pa.Colors.MenuSide), sideRect); } if (BarFunctions.IsOffice2007Style(EffectiveStyle) && GlobalManager.Renderer is Office2007Renderer) { Office2007MenuColorTable mt = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.Menu; if (mt != null && !mt.SideBorder.IsEmpty) { if (pa.RightToLeft) DisplayHelp.DrawGradientLine(g, sideRect.X + 1, sideRect.Y, sideRect.X + 1, sideRect.Bottom - 1, mt.SideBorder, 1); else DisplayHelp.DrawGradientLine(g, sideRect.Right - 2, sideRect.Y, sideRect.Right - 2, sideRect.Bottom - 1, mt.SideBorder, 1); } if (mt != null && !mt.SideBorderLight.IsEmpty) { if (pa.RightToLeft) DisplayHelp.DrawGradientLine(g, sideRect.X, sideRect.Y, sideRect.X, sideRect.Bottom - 1, mt.SideBorder, 1); else DisplayHelp.DrawGradientLine(g, sideRect.Right - 1, sideRect.Y, sideRect.Right - 1, sideRect.Bottom - 1, mt.SideBorderLight, 1); } } } if(this.IsOnCustomizeMenu) { if (this.EffectiveStyle == eDotNetBarStyle.OfficeXP || this.EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle)) { r.X+=(objImageSize.Height+8); r.Width-=(objImageSize.Height+8); } else { r.X+=(objImageSize.Height+4); r.Width-=(objImageSize.Height+4); } } if (bOnMenu && (this.EffectiveStyle == eDotNetBarStyle.OfficeXP || this.EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle))) { if(m_MouseOver) { Rectangle rHover=this.DisplayRectangle; rHover.Inflate(-1,0); if (BarFunctions.IsOffice2007Style(EffectiveStyle) && !(pa.Owner is DotNetBarManager) && GlobalManager.Renderer is Office2007Renderer) { Office2007ButtonItemStateColorTable bt = ((Office2007Renderer)GlobalManager.Renderer).ColorTable.ButtonItemColors[0].MouseOver; Office2007ButtonItemPainter.PaintBackground(g, bt, rHover, RoundRectangleShapeDescriptor.RoundCorner3); } else { if (!pa.Colors.ItemHotBackground2.IsEmpty) { System.Drawing.Drawing2D.LinearGradientBrush gradient = BarFunctions.CreateLinearGradientBrush(rHover, pa.Colors.ItemHotBackground, pa.Colors.ItemHotBackground2, pa.Colors.ItemHotBackgroundGradientAngle); g.FillRectangle(gradient, rHover); gradient.Dispose(); } else g.FillRectangle(new SolidBrush(pa.Colors.ItemHotBackground), rHover); NativeFunctions.DrawRectangle(g, new Pen(pa.Colors.ItemHotBorder), rHover); } } } // Draw text if needed if (Caption != "" && (m_AlwaysShowCaption || bOnMenu)) { eTextFormat objStringFormat=GetStringFormat(); Font objFont=this.GetFont(); Rectangle rText=new Rectangle(r.X+8,r.Y,r.Width,r.Height); if (pa.GlassEnabled && this.Parent is CaptionItemContainer && !(this.ContainerControl is Ribbon.QatToolbar)) { if (!pa.CachedPaint) Office2007RibbonControlPainter.PaintTextOnGlass(g, Caption, objFont, rText, TextDrawing.GetTextFormat(objStringFormat), textColor, true, true, 7); } else { TextDrawing.DrawString(g, Caption, objFont, textColor, rText, objStringFormat); } Size textSize = TextDrawing.MeasureString(g, Caption, objFont, 0, objStringFormat); r.X+=(int)textSize.Width+8; r.Width-=((int)textSize.Width+8); } if(m_ComboBox==null || this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode) { r.Inflate(-3,-2); g.FillRectangle(SystemBrushes.Window,r); NativeFunctions.DrawRectangle(g,SystemPens.ControlDark,r); r.X=r.Right-(System.Windows.Forms.SystemInformation.HorizontalScrollBarThumbWidth-2); r.Width=System.Windows.Forms.SystemInformation.HorizontalScrollBarThumbWidth-2; System.Windows.Forms.ControlPaint.DrawComboButton(g,r,System.Windows.Forms.ButtonState.Flat); } else { int selLength = m_ComboBox.SelectionLength; r.Inflate(-2,-2); if(m_ComboBox.Width!=r.Width) m_ComboBox.Width=r.Width; Point loc=r.Location; loc.Offset((r.Width-m_ComboBox.Width)/2,(r.Height-m_ComboBox.Height)/2); ScrollableControl scc = pa.ContainerControl as ScrollableControl; if (scc != null && scc.AutoScroll) loc.Offset(scc.AutoScrollPosition.X, scc.AutoScrollPosition.Y); if (m_ComboBox.Location != loc) m_ComboBox.Location = loc; if (selLength > 0 && selLength < 1000 && m_ComboBox.SelectionLength != selLength && m_ComboBox.Text.Length > selLength && m_ComboBox.DropDownStyle == ComboBoxStyle.DropDown) { m_ComboBox.SelectionLength = selLength; } } if(this.IsOnCustomizeMenu && this.Visible) { // Draw check box if this item is visible Rectangle rBox=new Rectangle(m_Rect.Left,m_Rect.Top,m_Rect.Height,m_Rect.Height); if (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle)) rBox.Inflate(-1,-1); BarFunctions.DrawMenuCheckBox(pa, rBox, EffectiveStyle, m_MouseOver); } } else { string Caption=this.Text; if(Caption=="") Caption="..."; else Caption+=" »"; if (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle)) g.FillRectangle(new SolidBrush(ColorFunctions.ToolMenuFocusBackColor(g)),this.DisplayRectangle); else g.FillRectangle(SystemBrushes.Control,this.DisplayRectangle); if(m_MouseOver && !this.DesignMode) { if (EffectiveStyle == eDotNetBarStyle.Office2000) { //r.Inflate(-1,-1); System.Windows.Forms.ControlPaint.DrawBorder3D(g,r,System.Windows.Forms.Border3DStyle.RaisedInner,System.Windows.Forms.Border3DSide.All); } else if (EffectiveStyle == eDotNetBarStyle.OfficeXP || EffectiveStyle == eDotNetBarStyle.Office2003 || EffectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(EffectiveStyle)) { r.Inflate(-1,-1); g.FillRectangle(new SolidBrush(ColorFunctions.HoverBackColor(g)),r); NativeFunctions.DrawRectangle(g,SystemPens.Highlight,r); } } r=new Rectangle(m_Rect.Top,-m_Rect.Right,m_Rect.Height,m_Rect.Width); g.RotateTransform(90); eTextFormat sf=GetStringFormat(); sf |= eTextFormat.HorizontalCenter; TextDrawing.DrawStringLegacy(g, Caption, GetFont(), textColor, r, sf); g.ResetTransform(); } if(this.Focused && this.DesignMode) { r=this.DisplayRectangle; r.Inflate(-1,-1); DesignTime.DrawDesignTimeSelection(g,r,pa.Colors.ItemDesignTimeBorder); } //if(this.DesignMode) this.DrawInsertMarker(g); } /// /// IBlock member implementation /// [Browsable(false), DevCoBrowsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never)] public override System.Drawing.Rectangle Bounds { get { return base.Bounds; } set { if (base.Bounds != value) { bool topLocationChanged = base.Bounds.Top != value.Top; bool leftLocationChanged = base.Bounds.Left != value.Left; base.Bounds = value; if ((topLocationChanged || leftLocationChanged) && (this.ContainerControl is ItemPanel || this.ContainerControl is ExplorerBar)) UpdateControlLocation(); } } } private void UpdateControlLocation() { if (m_ComboBox == null) return; Rectangle r = this.DisplayRectangle; r.Inflate(-2, -2); m_ComboBox.Location = r.Location; } public override void RecalcSize() { if (this.SuspendLayout) return; bool bOnMenu = this.IsOnMenu; if (this.Orientation == eOrientation.Horizontal) { // Default Height if (this.Parent != null && this.Parent is ImageItem) m_Rect.Height = ((ImageItem)this.Parent).SubItemsImageSize.Height + Dpi.Height(4); else m_Rect.Height = this.SubItemsImageSize.Height + Dpi.Height(4); eDotNetBarStyle effectiveStyle = EffectiveStyle; if (effectiveStyle == eDotNetBarStyle.OfficeXP || effectiveStyle == eDotNetBarStyle.Office2003 || effectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(effectiveStyle)) { if (m_ComboBox != null && m_Rect.Height < (m_ComboBox.Height + 2)) m_Rect.Height = m_ComboBox.Height + 2; } else { if (m_ComboBox != null && m_Rect.Height < (m_ComboBox.Height + 2)) m_Rect.Height = m_ComboBox.Height + 2; } // Default width m_Rect.Width = Dpi.Width(m_ComboWidth + 4); // Calculate Item Height if (Caption != "" && (m_AlwaysShowCaption || bOnMenu)) { System.Windows.Forms.Control objCtrl = this.ContainerControl as System.Windows.Forms.Control; if (objCtrl != null && IsHandleValid(objCtrl)) { Graphics g = BarFunctions.CreateGraphics(objCtrl); try { Size textSize = Size.Empty; if (m_Orientation == eOrientation.Vertical && !bOnMenu) textSize = TextDrawing.MeasureStringLegacy(g, Caption, GetFont(), Size.Empty, GetStringFormat()); else textSize = TextDrawing.MeasureString(g, Caption, GetFont(), 0, GetStringFormat()); if (textSize.Height > this.SubItemsImageSize.Height && textSize.Height > m_Rect.Height) m_Rect.Height = (int)textSize.Height + 4; m_Rect.Width = Dpi.Width(m_ComboWidth + 4) + (int)textSize.Width + 8; } finally { g.Dispose(); } } } Size objImageSize = GetMaxImageSize(); if (this.IsOnMenu && (effectiveStyle == eDotNetBarStyle.OfficeXP || effectiveStyle == eDotNetBarStyle.Office2003 || effectiveStyle == eDotNetBarStyle.VS2005 || BarFunctions.IsOffice2007Style(effectiveStyle))) { // THis is side bar that will need to be drawn for DotNet style m_Rect.Width += (objImageSize.Width + 7); } if (this.IsOnCustomizeMenu) m_Rect.Width += (objImageSize.Height + 2); } else { // Default width m_Rect.Width = Dpi.Width(this.SubItemsImageSize.Width + 4); string caption = this.Caption; if (caption == "") caption = "..."; else caption += " »"; System.Windows.Forms.Control objCtrl = this.ContainerControl as System.Windows.Forms.Control; if (objCtrl != null && IsHandleValid(objCtrl)) { Graphics g = BarFunctions.CreateGraphics(objCtrl); try { SizeF textSize = TextDrawing.MeasureString(g, caption, GetFont(), 0, GetStringFormat()); if (textSize.Height > this.SubItemsImageSize.Height) m_Rect.Width = (int)textSize.Height + 4; m_Rect.Height = (int)textSize.Width + 8; } finally { g.Dispose(); } } } // Always call base implementation to reset resize flag base.RecalcSize(); } protected internal override void OnContainerChanged(object objOldContainer) { base.OnContainerChanged(objOldContainer); if(m_ComboBox!=null) { if(m_ComboBox.Parent!=null) { //bool bVisible=false; if(m_ComboBox.Visible) { m_ComboBox.Visible=false; //bVisible=true; } System.Windows.Forms.Control parent=m_ComboBox.Parent; parent.Controls.Remove(m_ComboBox); //if(bVisible) //m_ComboBox.Visible=true; } System.Windows.Forms.Control objCtrl=null; if(this.ContainerControl!=null) { objCtrl=this.ContainerControl as System.Windows.Forms.Control; if(objCtrl!=null) { objCtrl.Controls.Add(m_ComboBox); OnDisplayedChanged(); m_ComboBox.Refresh(); } } } } protected internal override void OnAfterItemRemoved(BaseItem item, int itemIndex) { base.OnAfterItemRemoved(item, itemIndex); this.ContainerControl=null; } protected internal override void OnVisibleChanged(bool newValue) { if(m_ComboBox!=null && !newValue) m_ComboBox.Visible=newValue; base.OnVisibleChanged(newValue); } protected override void OnDisplayedChanged() { if(m_ComboBox!=null && !(this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode)) { m_ComboBox.Visible=this.Displayed; } } [EditorBrowsable(EditorBrowsableState.Never)] public override void OnGotFocus() { base.OnGotFocus(); if(m_ComboBox==null) return; if(m_ComboBox.Focused || this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode) return; m_ComboBox.Focus(); } private void ComboLostFocus(object sender, EventArgs e) { this.HideToolTip(); this.Text=m_ComboBox.Text; this.ReleaseFocus(); if(!m_MouseOver) return; m_MouseOver=false; this.Refresh(); } private void ComboMouseHover(object sender, EventArgs e) { if(this.DesignMode) return; if(System.Windows.Forms.Control.MouseButtons==System.Windows.Forms.MouseButtons.None) ShowToolTip(); } private void ComboMouseEnter(object sender, EventArgs e) { if(!m_MouseOver) { m_MouseOver=true; this.Refresh(); } } private void ComboMouseLeave(object sender, EventArgs e) { this.HideToolTip(); if(m_ComboBox.Focused) return; if(m_MouseOver) { m_MouseOver=false; this.Refresh(); } } private void ComboBoxVisibleChanged(object sender, EventArgs e) { this.HideToolTip(); } private void ComboGotFocus(object sender, EventArgs e) { this.HideToolTip(); this.Focus(); if (GetEnabled() && !this.DesignMode) { if(m_MenuVisibility==eMenuVisibility.VisibleIfRecentlyUsed && !m_RecentlyUsed && this.IsOnMenu) { // Propagate to the top m_RecentlyUsed=true; BaseItem objItem=this.Parent; while(objItem!=null) { IPersonalizedMenuItem ipm=objItem as IPersonalizedMenuItem; if(ipm!=null) ipm.RecentlyUsed=true; objItem=objItem.Parent; } } } } private void ComboSelChanged(object sender, EventArgs e) { if (!_CopyInProgress) { this.RaiseClick(); if (SelectedIndexChanged != null) SelectedIndexChanged(this, e); if (ShouldSyncProperties) BarFunctions.SyncProperty(this, "SelectedIndex"); ExecuteCommand(); } } private void ComboKeyDown(object sender,System.Windows.Forms.KeyEventArgs e) { this.HideToolTip(); if(e.KeyCode==System.Windows.Forms.Keys.Enter && this.Parent is PopupItem) { ((PopupItem)this.Parent).ClosePopup(); } } private void ComboDropDownChange(object sender,bool bExpanded) { this.Expanded=bExpanded; if(!bExpanded) this.ReleaseFocus(); } protected override void OnIsOnCustomizeDialogChanged() { base.OnIsOnCustomizeDialogChanged(); CustomizeChanged(); } protected override void OnDesignModeChanged() { base.OnDesignModeChanged(); CustomizeChanged(); } protected override void OnIsOnCustomizeMenuChanged() { base.OnIsOnCustomizeMenuChanged(); CustomizeChanged(); } private void CustomizeChanged() { if(this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.DesignMode) { m_ComboBox.Visible=false; } else { m_ComboBox.Visible=this.Displayed; } } /// /// Gets or sets the width of the of the drop-down portion of a combo box. /// [Category("Layout"), Browsable(true), Description("Indicates width of the of the drop-down portion of a combo box.")] public int DropDownWidth { get { return m_ComboBox.DropDownWidth; } set { m_ComboBox.DropDownWidth = value; } } /// /// Returns whether property should be serialized. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeDropDownWidth() { return m_ComboBox.Width != m_ComboBox.DropDownWidth; } /// /// Gets or sets the height of the of the drop-down portion of a combo box. /// [Category("Layout"), Browsable(true), DefaultValue(0), Description("Indicates height of the of the drop-down portion of a combo box.")] public int DropDownHeight { get { return m_ComboBox.DropDownHeight; } set { m_ComboBox.DropDownHeight = value; } } /// /// Indicates the Width of the combo box part of the item. /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Layout"),System.ComponentModel.Description("Indicates the Width of the combo box part of the item."),System.ComponentModel.DefaultValue(64)] public int ComboWidth { get { return m_ComboWidth; } set { if(m_ComboWidth!=value) { m_ComboWidth=value; if(this.Name!="" && this.GlobalItem) { BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["ComboWidth"],m_ComboWidth); } NeedRecalcSize=true; this.Refresh(); } OnAppearanceChanged(); } } /// /// Overridden. Releases the input focus. /// public override void ReleaseFocus() { if(m_ComboBox!=null && m_ComboBox.Focused) m_ComboBox.ReleaseFocus(); base.ReleaseFocus(); } /// /// Indicates whether control automatically releases its input focus when selection is made using keyboard. /// [DefaultValue(true), Browsable(true), Category("Behavior"), Description("Indicates whether control automatically releases its input focus when selection is made using keyboard.")] public bool AutoReleaseFocus { get { return m_ComboBox.AutoReleaseFocus; } set { m_ComboBox.AutoReleaseFocus = value; } } /// /// Returns the reference to the inner combo box control. /// [Browsable(false)] public ComboBoxEx ComboBoxEx { get { return m_ComboBox; } } // [System.ComponentModel.Browsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("The caption of the item.")] // public string Caption // { // get // { // return m_Caption; // } // set // { // if(m_Caption!=value) // { // m_Caption=value; // if(this.Name!="" && this.GlobalItem) // { // BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["Caption"],m_Caption); // } // m_NeedRecalcSize=true; // this.Refresh(); // } // } // } /// /// Indicates whether item caption is always shown. /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Indicates whether item caption is always shown."), System.ComponentModel.DefaultValue(false)] public bool AlwaysShowCaption { get { return m_AlwaysShowCaption; } set { if(m_AlwaysShowCaption!=value) { m_AlwaysShowCaption=value; } NeedRecalcSize=true; } } private Size GetMaxImageSize() { if(m_Parent!=null) { ImageItem objParentImageItem=m_Parent as ImageItem; if(objParentImageItem!=null) return objParentImageItem.SubItemsImageSize; else return this.ImageSize; } else return this.ImageSize; } private eTextFormat GetStringFormat() { eTextFormat format = eTextFormat.Default; format |= eTextFormat.SingleLine; format |= eTextFormat.EndEllipsis; format |= eTextFormat.VerticalCenter; return format; //sfmt.HotkeyPrefix=System.Drawing.Text.HotkeyPrefix.Show; //sfmt.FormatFlags=sfmt.FormatFlags | StringFormatFlags.NoWrap; //sfmt.Trimming=StringTrimming.EllipsisCharacter; //sfmt.Alignment=System.Drawing.StringAlignment.Near; //sfmt.LineAlignment=System.Drawing.StringAlignment.Center; //return sfmt; } protected virtual Font GetFont() { System.Windows.Forms.Control objCtrl=this.ContainerControl as System.Windows.Forms.Control; if(objCtrl!=null) return (Font)objCtrl.Font; return SystemFonts.DefaultFont; } [System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public override void InternalMouseEnter() { base.InternalMouseEnter(); //if(this.DesignMode || this.IsOnCustomizeMenu || this.IsOnCustomizeDialog || this.Orientation==eOrientation.Vertical) if(!m_MouseOver) { m_MouseOver=true; this.Refresh(); } } [System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public override void InternalMouseLeave() { base.InternalMouseLeave(); if(m_MouseOver) { m_MouseOver=false; this.Refresh(); } } protected internal override bool IsAnyOnHandle(IntPtr iHandle) { bool bRet=base.IsAnyOnHandle(iHandle); if(!bRet && m_ComboBox!=null && m_ComboBox.DroppedDown && m_ComboBox.DropDownHandle!=IntPtr.Zero && m_ComboBox.DropDownHandle==iHandle) bRet=true; return bRet; } protected override void OnStyleChanged() { base.OnStyleChanged(); m_ComboBox.Style=this.Style; } /// /// Gets an object representing the collection of the items contained in inner ComboBoxEx. /// [System.ComponentModel.Editor("DevComponents.DotNetBar.Design.ComboItemsEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)), System.ComponentModel.Category("Data"), DevCoBrowsable(true), Browsable(true), DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public System.Windows.Forms.ComboBox.ObjectCollection Items { get { return m_ComboBox.Items; } } /// /// Gets or sets a value specifying the style of the combo box. /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),DefaultValue(System.Windows.Forms.ComboBoxStyle.DropDownList),System.ComponentModel.Description("Gets or sets a value specifying the style of the combo box.")] public System.Windows.Forms.ComboBoxStyle DropDownStyle { get { return m_ComboBox.DropDownStyle; } set { m_ComboBox.DropDownStyle=value; } } /// /// Gets or sets the starting index of text selected in the combo box. /// [Browsable(false),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden),System.ComponentModel.DefaultValue(0)] public int SelectionStart { get { return m_ComboBox.SelectionStart; } set { m_ComboBox.SelectionStart=value; } } /// /// Gets or sets the number of characters selected in the editable portion of the combo box. /// [Browsable(false),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden),System.ComponentModel.DefaultValue(0)] public int SelectionLength { get { return m_ComboBox.SelectionLength; } set { m_ComboBox.SelectionLength=value; } } /// /// Gets or sets the text that is selected in the editable portion of a combo box. /// [Browsable(false),System.ComponentModel.DefaultValue(""),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)] public string SelectedText { get { return m_ComboBox.SelectedText; } set { m_ComboBox.SelectedText=value; } } /// /// Gets or sets currently selected item in the combo box. /// [Browsable(false),System.ComponentModel.DefaultValue(null),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)] public object SelectedItem { get { return m_ComboBox.SelectedItem; } set { m_ComboBox.SelectedItem=value; } } /// /// Gets or sets the index specifying the currently selected item. /// [Browsable(false),System.ComponentModel.DefaultValue(-1),System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Hidden)] public int SelectedIndex { get { return m_ComboBox.SelectedIndex; } set { m_ComboBox.SelectedIndex=value; } } /// /// Gets or sets the value indicating whether the item automatically loads all the fonts available into the combo box. /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Automatically loads all the fonts available into the combo box."),System.ComponentModel.DefaultValue(false)] public bool FontCombo { get { return m_FontCombo; } set { if(m_FontCombo!=value) { m_FontCombo=value; if(m_FontCombo) { m_ComboBox.LoadFonts(); m_ComboBox.DropDownStyle=System.Windows.Forms.ComboBoxStyle.DropDownList; //m_ComboBox.DrawMode=System.Windows.Forms.DrawMode.OwnerDrawVariable; } } } } /// /// Gets or sets the height of an item in the combo box. /// [DefaultValue(15), System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Behavior"),System.ComponentModel.Description("Indicates the height of an item in the combo box.")] public int ItemHeight { get { return m_ComboBox.ItemHeight; } set { m_ComboBox.ItemHeight=value; } } // IPersonalizedMenuItem Implementation /// /// Indicates item's visibility when on pop-up menu. /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("Indicates item's visiblity when on pop-up menu."),System.ComponentModel.DefaultValue(eMenuVisibility.VisibleAlways)] public eMenuVisibility MenuVisibility { get { return m_MenuVisibility; } set { if(m_MenuVisibility!=value) { m_MenuVisibility=value; if(m_Name!="" && this.GlobalItem) { BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["MenuVisibility"],m_MenuVisibility); } } } } /// /// Gets or sets the value that indicates whether the item was recently used. /// [System.ComponentModel.Browsable(false),System.ComponentModel.DefaultValue(false)] public bool RecentlyUsed { get { return m_RecentlyUsed; } set { if(m_RecentlyUsed!=value) { m_RecentlyUsed=value; if(m_Name!="" && this.GlobalItem) { BarFunctions.SetProperty(this.GetOwner(),this.GetType(),m_Name,System.ComponentModel.TypeDescriptor.GetProperties(this)["RecentlyUsed"],m_RecentlyUsed); } } } } protected override void OnEnabledChanged() { base.OnEnabledChanged(); if(m_ComboBox!=null) m_ComboBox.Enabled=this.Enabled; } private void InternalComboTextChanged(object sender, EventArgs e) { if(!_SettingText) this.Text = m_ComboBox.Text; OnComboBoxTextChanged(e); } /// /// Raises the ComboBoxTextChanged event. /// /// Provides event arguments. protected virtual void OnComboBoxTextChanged(EventArgs e) { if (ComboBoxTextChanged != null) ComboBoxTextChanged(this, e); } /// /// Overridden. Gets or sets the text associated with this item. /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), Browsable(false), Obsolete("Please use Text property instead to access ComboBox text.")] public virtual string ControlText { get { return this.Text; } set { this.Text = value; } } /// /// Gets or sets the text associated with this item. /// [Browsable(true), Category("Appearance"), Description("The text contained in the underlining Control portion of the item."), DefaultValue("")] public override string Text { get { return base.Text; } set { base.Text = value; } } private bool _SettingText = false; protected override void OnTextChanged() { if (m_ComboBox != null && m_ComboBox.Text != this.Text) { try { _SettingText = true; m_ComboBox.Text = this.Text; } finally { _SettingText = false; } } base.OnTextChanged(); } private string _Caption = ""; /// /// Gets or sets the item caption text displayed next to the combo box. /// [DefaultValue(""), System.ComponentModel.Category("Appearance"), Description("Indicates the item Caption displayed next to the combo box."), Localizable(true)] public string Caption { get { return _Caption; } set { if (value == null) value = ""; _Caption = value; } } /// /// Gets or sets a string that specifies the property of the data source whose contents you want to display. When ComboBoxItem is used in DropDown mode /// and objects like ComboItem are added to ComboBoxItems.Items collection DisplayMembers should be set to the name of the property you would /// like to use as text representation in editable portion of ComboBox. For example in case of ComboItem objects property should be set to Text. /// [System.ComponentModel.Browsable(true), DevCoBrowsable(true), System.ComponentModel.Category("Data"), System.ComponentModel.Description("Indicates string that specifies the property of the data source whose contents you want to display."), System.ComponentModel.DefaultValue("")] public virtual string DisplayMember { get { if(m_ComboBox!=null) return m_ComboBox.DisplayMember; return ""; } set { if (m_ComboBox != null) m_ComboBox.DisplayMember = value; } } /// /// Specifies whether combo box is drawn using themes when running on OS that supports themes like Windows XP /// [System.ComponentModel.Browsable(true),DevCoBrowsable(true),System.ComponentModel.Category("Appearance"),System.ComponentModel.Description("Specifies whether combo box is drawn using themes when running on OS that supports themes like Windows XP.")] public override bool ThemeAware { get { return m_ComboBox.ThemeAware; } set { m_ComboBox.ThemeAware=value; } } [System.ComponentModel.Browsable(false),System.ComponentModel.EditorBrowsable(System.ComponentModel.EditorBrowsableState.Never)] public override bool IsWindowed { get {return true;} } /// /// Gets or sets the watermark font. /// [Browsable(true), Category("Appearance"), Description("Indicates watermark font."), DefaultValue(null)] public Font WatermarkFont { get { return m_ComboBox.WatermarkFont; } set { m_ComboBox.WatermarkFont = value; } } /// /// Gets or sets the watermark text color. /// [Browsable(true), Category("Appearance"), Description("Indicates watermark text color.")] public Color WatermarkColor { get { return m_ComboBox.WatermarkColor; } set { m_ComboBox.WatermarkColor = value; } } /// /// Indicates whether property should be serialized by Windows Forms designer. /// [EditorBrowsable(EditorBrowsableState.Never)] public bool ShouldSerializeWatermarkColor() { return m_ComboBox.WatermarkColor != SystemColors.GrayText; } /// /// Resets the property to default value. /// [EditorBrowsable(EditorBrowsableState.Never)] public void ResetWatermarkColor() { this.WatermarkColor = SystemColors.GrayText; } /// /// Gets or sets whether watermark text is displayed when control is empty. Default value is true. /// [DefaultValue(true), Description("Indicates whether watermark text is displayed when control is empty.")] public virtual bool WatermarkEnabled { get { return m_ComboBox.WatermarkEnabled; } set { m_ComboBox.WatermarkEnabled = value; } } /// /// Gets or sets the watermark (tip) text displayed inside of the control when Text is not set and control does not have input focus. This property supports text-markup. /// Note that WatermarkText is not compatible with the auto-complete feature of .NET Framework 2.0. /// [Browsable(true), DefaultValue(""), Localizable(true), Category("Appearance"), Description("Indicates watermark text displayed inside of the control when Text is not set and control does not have input focus."), Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))] public string WatermarkText { get { return m_ComboBox.WatermarkText; } set { m_ComboBox.WatermarkText = value; } } /// /// Gets or sets the watermark hiding behaviour. Default value indicates that watermark is hidden when control receives input focus. /// [DefaultValue(eWatermarkBehavior.HideOnFocus), Category("Behavior"), Description("Indicates watermark hiding behaviour.")] public eWatermarkBehavior WatermarkBehavior { get { return m_ComboBox.WatermarkBehavior; } set { m_ComboBox.WatermarkBehavior = value; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Content), RefreshProperties(RefreshProperties.All), ParenthesizePropertyName(true)] public ControlBindingsCollection DataBindings { get { return m_ComboBox.DataBindings; } } /// /// Gets or sets whether control is stand-alone control. Stand-alone flag affects the appearance of the control in Office 2007 style. /// [Browsable(true), DefaultValue(false), Category("Appearance"), Description("Indicates the appearance of the control.")] public bool IsStandalone { get { return m_ComboBox.IsStandalone; } set { m_ComboBox.IsStandalone = value; } } public override string ToString() { return m_Text; } } }