Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Windows Forms / WinForm General / February 2007

Tip: Looking for answers? Try searching our database.

toolstrip container backcolor and gradients - I want it to look like outlook 2003!

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Kevin - 09 Feb 2007 17:54 GMT
Having moved to .net 2.0 I love the new ToolStripContainer, however it
is causing me some issues with colours in the rest of my application.

With visual styles enabled the ToolStripPanel is a blue gradient, from
light blue on the right, to a darker blue on the left.

I would really like the content panel of the ToolStripContainer to
match this colour scheme.  I can change the back colour to a light
blue, but not with a gradient.  I have used InactiveCaptionText
however this is too light, but is the closest I can get to the lighter
blue using the system colours.

How can I change it?  I know I can use a custom colour, but then if it
is run on a system with a different colour scheme it will look
strange, which is why i would like to stick with system colours.

Incidentally I notice that outlook 2003 uses a solid colour, however
that colour does match the lighter of the two blues.  This makes me
think that a gradient isnt possible, but somehow you can select the
lighter of the two colours.

Hope this all makes sense, any enlightenment will be greatfully
received!
Brian Sokolnicki - 09 Feb 2007 19:49 GMT
It think this is what your looking for.  I have attached code below.  Chang
the code to use system colors.

#region Using directives

using System;
using System.Collections.Generic;
using System.Text;

using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;
using System.Reflection;

#endregion

namespace MicroTek.RMS.CustomUserControl
{
 public class FormHeaderTitleStrip : ToolStrip
 {
   private FormHeaderTitleStripRenderer _renderer;

   public FormHeaderTitleStrip()
   {
     // Set defaults
     this.GripStyle = ToolStripGripStyle.Hidden;

     // Set renderer
     this._renderer = new FormHeaderTitleStripRenderer();

     // Look for headerText
     this.Renderer = this._renderer;
   }
 }

 #region Custom ToolStrip Renderer
 internal class FormHeaderTitleStripRenderer :
ToolStripProfessionalRenderer
 {
   public FormHeaderTitleStripRenderer()
     : base(new FormHeaderTitleColorTable())
   {
     this.RoundedEdges = false;
   }

   protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs
e)
   {
     base.OnRenderToolStripBorder(e);
   }
 }

 internal class FormHeaderTitleColorTable :
System.Windows.Forms.ProfessionalColorTable
 {

   public override Color ToolStripGradientBegin
   {
     get
     {
       return Color.FromArgb(114, 136, 172);
     }
   }

   public override Color ToolStripGradientMiddle
   {
     get
     {
       return Color.FromArgb(114, 136, 172);
     }
   }

   public override Color ToolStripGradientEnd
   {
     get
     {
       return Color.FromArgb(114, 136, 172);
     }
   }

   public override Color ToolStripBorder
   {
     get
     {
       return Color.Black;
     }
   }

 }

 #endregion
}

> Having moved to .net 2.0 I love the new ToolStripContainer, however it
> is causing me some issues with colours in the rest of my application.
[quoted text clipped - 19 lines]
> Hope this all makes sense, any enlightenment will be greatfully
> received!
Kevin - 12 Feb 2007 10:30 GMT
Thanks for your reply Brian, but I'm not sure this is what I am after.
Your code seems to create a toolstrip with a custom gradient (or in
your case, a solid colour), but i want my panel to have the same
gradient as the toolstrip panel.

However, it has opened my eyes to the ProfessionalColorTable class, so
I will investigate that.

Thanks
Kevin
Kevin - 12 Feb 2007 11:21 GMT
ok, I have discovered the ProfessionalColor class.

If I set the back color of my control to be
ProfessionalColors.RaftingContainerGradientEnd at runtime it sets it
to the correct colour.

Interestingly though I cant choose this colour at design time.  Does
anyone know why?
Also if I change my theme whilst my program is running all the
toolbars etc on my program change to the correct colour but my
usercontrol remains the old colour.   Obviously this is a very minor
thing, but is there something else I should be doing?  I cant bind to
it because it says that ProfessionalColor is a type and cannot be used
in an expression.

Thanks for your help
Kevin

Rate this thread:







Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.