PredefinedPalette.User - how do I define the palette?


https://www.nevron.com/Forum/Topic7283.aspx
Print Topic | Close Window

By Kevin Harrison - 11 Years Ago
Perhaps I'm doing this wrong, but I decided to use an NPaletteColorPane to display a set of colours which the user can select.
The thing is I want to use my own colours not one of the two predefined palettes. I can do the following:
            NArgbColorValuePalette nevronPalette = new NArgbColorValuePalette();            nevronPalette.SetPredefinedPalette(PredefinedPalette.User);
but the Help gives me no clue how to define my own paltee from an array of Color.
Or, is there a better way to achieve this?
Thanks
Kevin
PS It shouldn't be this hard 
By Kevin Harrison - 11 Years Ago

Ok - I achieved it by creating Entries one by one from my colour array. Is this the best method?

Now I need to work out which event tells me a colour has been selected, since Mouse_Click can occur between colours. Is there a specific event to attach to? The example uses Mouse_Leave which isn't that useful.

Thanks

Kevin

By Nevron Support - 11 Years Ago
Ok - I achieved it by creating Entries one by one from my colour array. Is this the best method?
Yes.

To handle that the color has been changed you need to attach to ColorChanged event (I assume that you are using NPaletteColorPane control).
By Kevin Harrison - 11 Years Ago
Thanks.
By Kevin Harrison - 11 Years Ago
Looks like there's a bug with the ColorChanged event - it fires whenever I click on the colour pane. So, if I click between colours or in a blank area of the pane, it fires and returns the last selected colour.
By Nevron Support - 11 Years Ago
Hi Kevin,

Indeed there is a bug.

We will fix this in the next service pack.

In meanwhile you can workaround the bug by overriding OnMouseUp method as follows:

public class MyNPaletteColorPane : NPaletteColorPane
   {
      protected override void OnMouseUp(MouseEventArgs e)
      {
         NCommand command = HitTest(e.Location);
         if (command == null)
            return;

         base.OnMouseUp(e);
      }
   }
By Kevin Harrison - 11 Years Ago

Thanks. I got round it by checking if the selected index was the same as the last one and ignored it if it was. This does mean that the same colour can't be selected twice in succession but that's reasonable for my application.

Kevin