Hi,I'm just encapsulating the ultra colour picker for our app framework. I want to be able to not show the text value of the colour. So it just shows the colour block. Is there a way to do this? Or do I just need to limit the size of the control so you can't see the colour bit? (thats a bit of a nasty way to do it!)Also more importantly how do the colour names and tabs react when in difference languages? Really we only need the colour picker/custom colour tab, not the Web/System tabs, can we disable them?RegardsChris
proyAshley said: I was wondering if you had a full C# example of this custom control? I'm getting some errors when I try it. [are you missing a using directive or an assembly reference?] Thanks, Proy
I was wondering if you had a full C# example of this custom control? I'm getting some errors when I try it. [are you missing a using directive or an assembly reference?]
Thanks,
Proy
Attached to this post is a project that uses the custom control. If you're not using 2011.1, then just run the version utility on it.
This is slight overkill and it's better to use Mike's advice, but here's how you can do it. On your project in Visual Studio, add a new Custom Control named UltraColorPickerPlus. Afterwards, paste the code below inside the namespace so it replaces the generated skeleton.
public partial class UltraColorPickerPlus : Infragistics.Win.UltraWinEditors.UltraComboEditor, Infragistics.Win.IUIElementCreationFilter { private Infragistics.Win.UltraWinEditors.UltraPictureBoxControlUIElement ColorElement; private Infragistics.Win.UltraWinEditors.UltraPictureBox picturebox = new Infragistics.Win.UltraWinEditors.UltraPictureBox(); private Infragistics.Win.Misc.UltraPopupControlContainer PopupControl = new Infragistics.Win.Misc.UltraPopupControlContainer(); private MyTabbedColorPicker ColorPicker = new MyTabbedColorPicker(); public delegate void ColorPickedHandler(object sender, ColorPickerArgs ca); public event ColorPickedHandler ColorPicked; public override string Text { get { base.Text = string.Empty; return string.Empty; } } protected override System.Drawing.Size DefaultSize { get { return new Size(50,30); } } public override Infragistics.Win.DropDownStyle DropDownStyle { get { return Infragistics.Win.DropDownStyle.DropDownList; } } public Color Color { get { return ColorPicker.Color; } } private bool _UseCustom = true; public bool UseCustom { get { return _UseCustom; } set { _UseCustom = value; } } private bool _UseWeb = true; public bool UseWeb { get { return _UseWeb; } set { _UseWeb = value; } } private bool _UseSystem = true; public bool UseSystem { get { return _UseSystem; } set { _UseSystem = value; } } public UltraColorPickerPlus() { InitializeComponent(); this.CreationFilter = this; this.DropDownStyle = Infragistics.Win.DropDownStyle.DropDownList; } private void coloreditor_ColorChanged(object sender, EventArgs e) { PopupControl.Close(); this.picturebox.BackColor = ColorPicker.Color; ColorPickerArgs cpa = new ColorPickerArgs(ColorPicker.Color); ColorPicked(this, cpa); } protected override void OnBeforeDropDown(CancelEventArgs args) { ColorPicker = new MyTabbedColorPicker(_UseCustom, _UseWeb, _UseSystem); ColorPicker.ColorChanged += new EventHandler(coloreditor_ColorChanged); PopupControl.PopupControl = ColorPicker; PopupControl.Show(); args.Cancel = true; base.OnBeforeDropDown(args); } public void AfterCreateChildElements(Infragistics.Win.UIElement parent) { if (parent is Infragistics.Win.UltraWinEditors.UltraComboEditorUIElement) { ColorElement = new Infragistics.Win.UltraWinEditors.UltraPictureBoxControlUIElement(picturebox); picturebox.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid; Rectangle ColorRect = parent.RectInsideBorders; ColorRect.Height = 16; ColorRect.Width = 16; ColorRect.X = 3; ColorRect.Y = 3; ColorElement.Rect = ColorRect; parent.ChildElements.Add(ColorElement); } } public bool BeforeCreateChildElements(Infragistics.Win.UIElement parent) { return false; } } public partial class MyTabbedColorPicker : Infragistics.Win.TabbedColorPicker { private bool UseCustom = true, UseWeb = true, UseSystem = true; public MyTabbedColorPicker() { } public MyTabbedColorPicker(bool usecustom, bool useweb, bool usesystem) { UseCustom = usecustom; UseWeb = useweb; UseSystem = usesystem; } protected override void OnLoad(EventArgs e) { for (int passes = 0; passes < 3; passes++) { TabControl tabControl = (TabControl)this.Controls[0]; foreach (Control tab in tabControl.Controls) { if (tab is TabPage) { switch (((TabPage)tab).Text) { case "Custom": if (!UseCustom) tabControl.TabPages.Remove((TabPage)tab); break; case "Web": if (!UseWeb) tabControl.TabPages.Remove((TabPage)tab); break; case "System": if (!UseSystem) tabControl.TabPages.Remove((TabPage)tab); break; } } } } base.OnLoad(e); } } public class ColorPickerArgs : System.EventArgs { private Color Color; public ColorPickerArgs(Color c) { this.Color = c; } public Color ColorPicked { get { return Color; } } }
When you drop the custom control on your form after building the solution, you'll find 3 additional properties; UseCustom, UseWeb, UseSystem. Set those to true or false to either hide or show the tab. Also, pay attention to the Infragistics class references in the custom control to make sure you have them in your references of the project.
Edit Note: There is also a Color property that allows you to grab the picked color, and also a ColorPicked event that has a ColorPicked property in the args that contains the color picked.
Hi Chris,
chrisclarke007 said:I'm just encapsulating the ultra colour picker for our app framework. I want to be able to not show the text value of the colour. So it just shows the colour block. Is there a way to do this? Or do I just need to limit the size of the control so you can't see the colour bit? (thats a bit of a nasty way to do it!)
There's no built-in functionality to hide the text. You could just make the control's width smaller, though. That seems like it should work.
chrisclarke007 said:Also more importantly how do the colour names and tabs react when in difference languages?
I'm not sure, but I imagine it will display in the correct language. The UltraColorPicker is just using the DotNet Color class, so I assume it's localized by Microsoft.
chrisclarke007 said:Really we only need the colour picker/custom colour tab, not the Web/System tabs, can we disable them?
There is currently no way to hide tabs. You should Submit a feature request to Infragistics.