MAXScript Tools and Interaction with 3ds Max > DotNet In MAXScript > DotNet Examples >

# Creating A Simple DotNet MonthCalendar And Changing Its Colors

The following example creates a simple dialog with a MonthCalendar dotNet control and assigns a mousedown event handler which prints the properties, methods and events:

EXAMPLE
    rollout test "test" height:200 width:220
    (
    dotNetControl f1 "MonthCalendar" align:#left height:180 width:200
    on f1 mousedown val do
    (
    format "in mousedown handler: arg: %\n" val
    format "showproperties:\n"
    showproperties val
    format "showmethods:\n"
    showmethods val
    format "showevents:\n"
    showevents val
    format "getpropnames : %\n" (getpropnames val)
    format "prop values:\n"
    )
    )
    createdialog test escapeEnable:true

After evaluation, we have a dialog showing a Month Calendar DotNet Control with default settings. We can see the constructor of the control using the dotnet.showconstructors() method:

EXAMPLE
     --see the constructor of the control
    dotnet.showConstructors test.f1
    System.Windows.Forms.MonthCalendar()
    true

Now let's change the calendar's appearance by modifying its colors:

EXAMPLE

     --First we list all properties of the control --and look to find those controlling some of its colors:
    showproperties test.f1
    .AccessibilityObject : <System.Windows.Forms.AccessibleObject>, read-only
    .AccessibleDefaultActionDescription : <System.String>
    .AccessibleDescription : <System.String>
    .AccessibleName : <System.String>
    .AccessibleRole : <System.Windows.Forms.AccessibleRole>
    .AllowDrop : <System.Boolean>
    .Anchor : <System.Windows.Forms.AnchorStyles>
    .AnnuallyBoldedDates : <System.DateTime[]>
    .AutoScrollOffset : <System.Drawing.Point>
    .AutoSize : <System.Boolean>
     .BackColor : <System.Drawing.Color>
                                  .BackgroundImage : <System.Drawing.Image>
                                  .BackgroundImageLayout : <System.Windows.Forms.ImageLayout>
                                  .BindingContext : <System.Windows.Forms.BindingContext>
                                  .BoldedDates : <System.DateTime[]>
                                  .Bottom : <System.Int32>, read-only
                                  .Bounds : <System.Drawing.Rectangle>
                                  .CalendarDimensions : <System.Drawing.Size>
                                  .CanFocus : <System.Boolean>, read-only
                                  .CanSelect : <System.Boolean>, read-only
                                  .Capture : <System.Boolean>
                                  .CausesValidation : <System.Boolean>
                                  .CheckForIllegalCrossThreadCalls : <System.Boolean>, static
                                  .ClientRectangle : <System.Drawing.Rectangle>, read-only
                                  .ClientSize : <System.Drawing.Size>
                                  .CompanyName : <System.String>, read-only
                                  .Container : <System.ComponentModel.IContainer>, read-only
                                  .ContainsFocus : <System.Boolean>, read-only
                                  .ContextMenu : <System.Windows.Forms.ContextMenu>
                                  .ContextMenuStrip : <System.Windows.Forms.ContextMenuStrip>
                                  .Controls : <System.Windows.Forms.Control+ControlCollection>, read-only
                                  .Created : <System.Boolean>, read-only
                                  .Cursor : <System.Windows.Forms.Cursor>
                                  .DataBindings : <System.Windows.Forms.ControlBindingsCollection>, read-only
                                  .DefaultBackColor : <System.Drawing.Color>, read-only, static
                                  .DefaultFont : <System.Drawing.Font>, read-only, static
                                  .DefaultForeColor : <System.Drawing.Color>, read-only, static
                                  .DisplayRectangle : <System.Drawing.Rectangle>, read-only
                                  .Disposing : <System.Boolean>, read-only
                                  .Dock : <System.Windows.Forms.DockStyle>
                                  .Enabled : <System.Boolean>
                                  .FirstDayOfWeek : <System.Windows.Forms.Day>
                                  .Focused : <System.Boolean>, read-only
                                  .Font : <System.Drawing.Font>

                                   .ForeColor : <System.Drawing.Color>
                                  .Handle : <System.IntPtr>, read-only
                                  .HasChildren : <System.Boolean>, read-only
                                  .Height : <System.Int32>
                                  .ImeMode : <System.Windows.Forms.ImeMode>
                                  .InvokeRequired : <System.Boolean>, read-only
                                  .IsAccessible : <System.Boolean>
                                  .IsDisposed : <System.Boolean>, read-only
                                  .IsHandleCreated : <System.Boolean>, read-only
                                  .IsMirrored : <System.Boolean>, read-only
                                  .LayoutEngine : <System.Windows.Forms.Layout.LayoutEngine>, read-only
                                  .Left : <System.Int32>
                                  .Location : <System.Drawing.Point>
                                  .Margin : <System.Windows.Forms.Padding>
                                  .MaxDate : <System.DateTime>
                                  .MaximumSize : <System.Drawing.Size>
                                  .MaxSelectionCount : <System.Int32>
                                  .MinDate : <System.DateTime>
                                  .MinimumSize : <System.Drawing.Size>
                                  .ModifierKeys : <System.Windows.Forms.Keys>, read-only, static
                                  .MonthlyBoldedDates : <System.DateTime[]>
                                  .MouseButtons : <System.Windows.Forms.MouseButtons>, read-only, static
                                  .MousePosition : <System.Drawing.Point>, read-only, static
                                  .Name : <System.String>
                                  .Padding : <System.Windows.Forms.Padding>
                                  .Parent : <System.Windows.Forms.Control>
                                  .PreferredSize : <System.Drawing.Size>, read-only
                                  .ProductName : <System.String>, read-only
                                  .ProductVersion : <System.String>, read-only
                                  .RecreatingHandle : <System.Boolean>, read-only
                                  .Region : <System.Drawing.Region>
                                  .Right : <System.Int32>, read-only
                                  .RightToLeft : <System.Windows.Forms.RightToLeft>
                                  .RightToLeftLayout : <System.Boolean>
                                  .ScrollChange : <System.Int32>
                                  .SelectionEnd : <System.DateTime>
                                  .SelectionRange : <System.Windows.Forms.SelectionRange>
                                  .SelectionStart : <System.DateTime>
                                  .ShowToday : <System.Boolean>
                                  .ShowTodayCircle : <System.Boolean>
                                  .ShowWeekNumbers : <System.Boolean>
                                  .SingleMonthSize : <System.Drawing.Size>, read-only
                                  .Site : <System.ComponentModel.ISite>
                                  .Size : <System.Drawing.Size>
                                  .TabIndex : <System.Int32>
                                  .TabStop : <System.Boolean>
                                  .Tag : <System.Object>
                                  .Text : <System.String>

                                   .TitleBackColor : <System.Drawing.Color>
                                  .TitleForeColor : <System.Drawing.Color>
                                  .TodayDate : <System.DateTime>
                                  .TodayDateSet : <System.Boolean>, read-only
                                  .Top : <System.Int32>
                                  .TopLevelControl : <System.Windows.Forms.Control>, read-only
                                  .TrailingForeColor : <System.Drawing.Color>
                                  .UseWaitCursor : <System.Boolean>
                                  .Visible : <System.Boolean>
                                  .Width : <System.Int32>
                                  .WindowTarget : <System.Windows.Forms.IWindowTarget>
                                  true

### Using DotNet Color Presets

We want to change the color properties of the control. Let's take a look at their own properties first:

    showproperties test.f1.ForeColor --see all properties of the color
    .A : <System.Byte>, read-only
    .AliceBlue : <System.Drawing.Color>, read-only, static
    .AntiqueWhite : <System.Drawing.Color>, read-only, static
    .Aqua : <System.Drawing.Color>, read-only, static
    .Aquamarine : <System.Drawing.Color>, read-only, static
    .Azure : <System.Drawing.Color>, read-only, static
    .B : <System.Byte>, read-only
    .Beige : <System.Drawing.Color>, read-only, static
    .Bisque : <System.Drawing.Color>, read-only, static
    .Black : <System.Drawing.Color>, read-only, static
    .BlanchedAlmond : <System.Drawing.Color>, read-only, static
    .Blue : <System.Drawing.Color>, read-only, static
    .BlueViolet : <System.Drawing.Color>, read-only, static
    .Brown : <System.Drawing.Color>, read-only, static
    .BurlyWood : <System.Drawing.Color>, read-only, static
    .CadetBlue : <System.Drawing.Color>, read-only, static
    .Chartreuse : <System.Drawing.Color>, read-only, static
    .Chocolate : <System.Drawing.Color>, read-only, static
    .Coral : <System.Drawing.Color>, read-only, static
    .CornflowerBlue : <System.Drawing.Color>, read-only, static
    .Cornsilk : <System.Drawing.Color>, read-only, static
    .Crimson : <System.Drawing.Color>, read-only, static
    .Cyan : <System.Drawing.Color>, read-only, static
    .DarkBlue : <System.Drawing.Color>, read-only, static
    .DarkCyan : <System.Drawing.Color>, read-only, static
    .DarkGoldenrod : <System.Drawing.Color>, read-only, static
    .DarkGray : <System.Drawing.Color>, read-only, static
    .DarkGreen : <System.Drawing.Color>, read-only, static
    .DarkKhaki : <System.Drawing.Color>, read-only, static
    .DarkMagenta : <System.Drawing.Color>, read-only, static
    .DarkOliveGreen : <System.Drawing.Color>, read-only, static
    .DarkOrange : <System.Drawing.Color>, read-only, static
    .DarkOrchid : <System.Drawing.Color>, read-only, static
    .DarkRed : <System.Drawing.Color>, read-only, static
    .DarkSalmon : <System.Drawing.Color>, read-only, static
    .DarkSeaGreen : <System.Drawing.Color>, read-only, static
    .DarkSlateBlue : <System.Drawing.Color>, read-only, static
    .DarkSlateGray : <System.Drawing.Color>, read-only, static
    .DarkTurquoise : <System.Drawing.Color>, read-only, static
    .DarkViolet : <System.Drawing.Color>, read-only, static
    .DeepPink : <System.Drawing.Color>, read-only, static
    .DeepSkyBlue : <System.Drawing.Color>, read-only, static
    .DimGray : <System.Drawing.Color>, read-only, static
    .DodgerBlue : <System.Drawing.Color>, read-only, static
    .Firebrick : <System.Drawing.Color>, read-only, static
    .FloralWhite : <System.Drawing.Color>, read-only, static
    .ForestGreen : <System.Drawing.Color>, read-only, static
    .Fuchsia : <System.Drawing.Color>, read-only, static
    .G : <System.Byte>, read-only
    .Gainsboro : <System.Drawing.Color>, read-only, static
    .GhostWhite : <System.Drawing.Color>, read-only, static
    .Gold : <System.Drawing.Color>, read-only, static
    .Goldenrod : <System.Drawing.Color>, read-only, static
    .Gray : <System.Drawing.Color>, read-only, static
    .Green : <System.Drawing.Color>, read-only, static
    .GreenYellow : <System.Drawing.Color>, read-only, static
    .Honeydew : <System.Drawing.Color>, read-only, static
    .HotPink : <System.Drawing.Color>, read-only, static
    .IndianRed : <System.Drawing.Color>, read-only, static
    .Indigo : <System.Drawing.Color>, read-only, static
    .IsEmpty : <System.Boolean>, read-only
    .IsKnownColor : <System.Boolean>, read-only
    .IsNamedColor : <System.Boolean>, read-only
    .IsSystemColor : <System.Boolean>, read-only
    .Ivory : <System.Drawing.Color>, read-only, static
    .Khaki : <System.Drawing.Color>, read-only, static
    .Lavender : <System.Drawing.Color>, read-only, static
    .LavenderBlush : <System.Drawing.Color>, read-only, static
    .LawnGreen : <System.Drawing.Color>, read-only, static
    .LemonChiffon : <System.Drawing.Color>, read-only, static
    .LightBlue : <System.Drawing.Color>, read-only, static
    .LightCoral : <System.Drawing.Color>, read-only, static
    .LightCyan : <System.Drawing.Color>, read-only, static
    .LightGoldenrodYellow : <System.Drawing.Color>, read-only, static
    .LightGray : <System.Drawing.Color>, read-only, static
    .LightGreen : <System.Drawing.Color>, read-only, static
    .LightPink : <System.Drawing.Color>, read-only, static
    .LightSalmon : <System.Drawing.Color>, read-only, static
    .LightSeaGreen : <System.Drawing.Color>, read-only, static
    .LightSkyBlue : <System.Drawing.Color>, read-only, static
    .LightSlateGray : <System.Drawing.Color>, read-only, static
    .LightSteelBlue : <System.Drawing.Color>, read-only, static
    .LightYellow : <System.Drawing.Color>, read-only, static
    .Lime : <System.Drawing.Color>, read-only, static
    .LimeGreen : <System.Drawing.Color>, read-only, static
    .Linen : <System.Drawing.Color>, read-only, static
    .Magenta : <System.Drawing.Color>, read-only, static
    .Maroon : <System.Drawing.Color>, read-only, static
    .MediumAquamarine : <System.Drawing.Color>, read-only, static
    .MediumBlue : <System.Drawing.Color>, read-only, static
    .MediumOrchid : <System.Drawing.Color>, read-only, static
    .MediumPurple : <System.Drawing.Color>, read-only, static
    .MediumSeaGreen : <System.Drawing.Color>, read-only, static
    .MediumSlateBlue : <System.Drawing.Color>, read-only, static
    .MediumSpringGreen : <System.Drawing.Color>, read-only, static
    .MediumTurquoise : <System.Drawing.Color>, read-only, static
    .MediumVioletRed : <System.Drawing.Color>, read-only, static
    .MidnightBlue : <System.Drawing.Color>, read-only, static
    .MintCream : <System.Drawing.Color>, read-only, static
    .MistyRose : <System.Drawing.Color>, read-only, static
    .Moccasin : <System.Drawing.Color>, read-only, static
    .Name : <System.String>, read-only
    .NavajoWhite : <System.Drawing.Color>, read-only, static
    .Navy : <System.Drawing.Color>, read-only, static
    .OldLace : <System.Drawing.Color>, read-only, static
    .Olive : <System.Drawing.Color>, read-only, static
    .OliveDrab : <System.Drawing.Color>, read-only, static
    .Orange : <System.Drawing.Color>, read-only, static
    .OrangeRed : <System.Drawing.Color>, read-only, static
    .Orchid : <System.Drawing.Color>, read-only, static
    .PaleGoldenrod : <System.Drawing.Color>, read-only, static
    .PaleGreen : <System.Drawing.Color>, read-only, static
    .PaleTurquoise : <System.Drawing.Color>, read-only, static
    .PaleVioletRed : <System.Drawing.Color>, read-only, static
    .PapayaWhip : <System.Drawing.Color>, read-only, static
    .PeachPuff : <System.Drawing.Color>, read-only, static
    .Peru : <System.Drawing.Color>, read-only, static
    .Pink : <System.Drawing.Color>, read-only, static
    .Plum : <System.Drawing.Color>, read-only, static
    .PowderBlue : <System.Drawing.Color>, read-only, static
    .Purple : <System.Drawing.Color>, read-only, static
    .R : <System.Byte>, read-only
    .Red : <System.Drawing.Color>, read-only, static
    .RosyBrown : <System.Drawing.Color>, read-only, static
    .RoyalBlue : <System.Drawing.Color>, read-only, static
    .SaddleBrown : <System.Drawing.Color>, read-only, static
    .Salmon : <System.Drawing.Color>, read-only, static
    .SandyBrown : <System.Drawing.Color>, read-only, static
    .SeaGreen : <System.Drawing.Color>, read-only, static
    .SeaShell : <System.Drawing.Color>, read-only, static
    .Sienna : <System.Drawing.Color>, read-only, static
    .Silver : <System.Drawing.Color>, read-only, static
    .SkyBlue : <System.Drawing.Color>, read-only, static
    .SlateBlue : <System.Drawing.Color>, read-only, static
    .SlateGray : <System.Drawing.Color>, read-only, static
    .Snow : <System.Drawing.Color>, read-only, static
    .SpringGreen : <System.Drawing.Color>, read-only, static
    .SteelBlue : <System.Drawing.Color>, read-only, static
    .Tan : <System.Drawing.Color>, read-only, static
    .Teal : <System.Drawing.Color>, read-only, static
    .Thistle : <System.Drawing.Color>, read-only, static
    .Tomato : <System.Drawing.Color>, read-only, static
    .Transparent : <System.Drawing.Color>, read-only, static
    .Turquoise : <System.Drawing.Color>, read-only, static
    .Violet : <System.Drawing.Color>, read-only, static
    .Wheat : <System.Drawing.Color>, read-only, static
    .White : <System.Drawing.Color>, read-only, static
    .WhiteSmoke : <System.Drawing.Color>, read-only, static
    .Yellow : <System.Drawing.Color>, read-only, static
    .YellowGreen : <System.Drawing.Color>, read-only, static
    .Empty : <System.Drawing.Color>, read-only, static
    true

Looks like the color property itself has properties, some of them read-only definitions of typical colors! This means that we can set the .ForeColor and .BackColor properties to the static read-only values they already defined:

    test.f1.ForeColor = test.f1.ForeColor.Blue
    dotNetObject:System.Drawing.Color
    test.f1.BackColor = test.f1.BackColor.Yellow
    dotNetObject:System.Drawing.Color
    test.f1.TitleBackColor = test.f1.TitleBackColor.Tomato
    dotNetObject:System.Drawing.Color

### Using User-Defined Colors

Of course, we can create our own DotNet colors instead of using the presets.

Let's take a look at the methods that a System.Drawing.Color object exposes:

    showMethods test.f1.backcolor
    .<System.Boolean>Equals <System.Object>obj
    .[static]<System.Boolean>Equals <System.Object>objA <System.Object>objB
    .[static]<System.Drawing.Color>FromArgb <System.Int32>argb
    .[static]<System.Drawing.Color>FromArgb <System.Int32>alpha <System.Drawing.Color>baseColor
     .[static]<System.Drawing.Color>FromArgb <System.Int32>red <System.Int32>green <System.Int32>blue
                                     .[static]<System.Drawing.Color>FromArgb <System.Int32>alpha <System.Int32>red <System.Int32>green <System.Int32>blue
                                     .[static]<System.Drawing.Color>FromKnownColor <System.Drawing.KnownColor>color
                                     .[static]<System.Drawing.Color>FromName <System.String>name
                                     .<System.Single>GetBrightness()
                                     .<System.Int32>GetHashCode()
                                     .<System.Single>GetHue()
                                     .<System.Single>GetSaturation()
                                     .<System.Type>GetType()
                                     .[static]<System.Boolean>ReferenceEquals <System.Object>objA <System.Object>objB
                                     .<System.Int32>ToArgb()
                                     .<System.Drawing.KnownColor>ToKnownColor()
                                     .<System.String>ToString()
                                     true

As you can see, the .FromARGB() method allows us to provide Red, Green and Blue values and it will construct a DotNet color value for us:

    test.f1.forecolor = test.f1.backcolor.FromArgb 255 255 100
    test.f1.backcolor = test.f1.backcolor.FromArgb 100 200 234
    dotNetObject:System.Drawing.Color

#### See Also

- DotNet In MAXScript