Skip to main content

SchedulerControl.GetResourceColorSchemasCopy() Method

Returns copies of color schemas that are currently used to paint visible resources.

Namespace: DevExpress.XtraScheduler

Assembly: DevExpress.XtraScheduler.v23.2.dll

NuGet Package: DevExpress.Win.Scheduler

Declaration

public SchedulerColorSchemaCollection GetResourceColorSchemasCopy()

Returns

Type Description
SchedulerColorSchemaCollection

A SchedulerColorSchemaCollection object.

Remarks

Call the GetResourceColorSchemasCopy method to get the collection of the currently used resource color schema copies. By default, if you change a set of visible resources (for example, by using resource filter controls) the collection of resource color schemas will remain unchanged, i.e. the same color schemas in the same order will be used to paint resources, newly selected to be displayed in the scheduler.

XtraScheduler_DefaultResourceColorSchemas

However, you can assign a specific color schema to each visible resource. To do this, handle the SchedulerControl.QueryResourceColorSchema event.

XtraScheduler_QueryResourceColorSchema

Example

This example demonstrates how to link a specific SchedulerColorSchema to each visible resource.

Call the SchedulerControl.GetResourceColorSchemasCopy method to obtain a collection of color schemas that are currently available for resource coloring (according to the currently active skin) and handle the SchedulerControl.QueryResourceColorSchema event to associate a specific color schema from the obtained collection to each resource displayed in the scheduler control.

using DevExpress.XtraScheduler;
using System.Collections.Generic;
// ...

namespace QueryResourceColorSchema {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
            AddResources();

            // Get copies of color schemas that are curremnty used to paint resources.
            PrepareResourceColorSchemas();

            schedulerControl1.LookAndFeel.StyleChanged += new EventHandler(LookAndFeel_StyleChanged);
        }

        void LookAndFeel_StyleChanged(object sender, EventArgs e) {
            // Get copies of color schemas to be used to paint resources
            // after the active skin has been changed.
            PrepareResourceColorSchemas();

            schedulerControl1.ActiveView.LayoutChanged();
        }

        // ...

        Dictionary<object, SchedulerColorSchema> resourceColorSchemas = 
            new Dictionary<object, SchedulerColorSchema>();

        private void PrepareResourceColorSchemas() {
            this.resourceColorSchemas.Clear();
            int count = Resources.Count;
            SchedulerColorSchemaCollection currentColorSchemas = 
                schedulerControl1.GetResourceColorSchemasCopy();
            int schemaCount = currentColorSchemas.Count;
            for (int i = 0; i < count; i++) {
                Resource resource = schedulerControl1.Storage.Resources[i];
                this.resourceColorSchemas.Add(resource.Id, currentColorSchemas[i % schemaCount]);
            }
        }

        private void schedulerControl1_QueryResourceColorSchema(object sender, 
                                                                QueryResourceColorSchemaEventArgs e) {
            object key = e.Resource.Id;
            if (this.resourceColorSchemas.ContainsKey(key))
                e.ResourceColorSchema = this.resourceColorSchemas[key];
        }
    }
}
See Also