Click here to Skip to main content
Licence 
First Posted 11 Dec 2003
Views 188,879
Bookmarked 61 times

C# Grid

By | 11 Dec 2003 | Article
An implementation of a grid in C#

Introduction

Before we begin, this grid is in it's infancy and I hope with collaboration from other CodeProject members we can make this grid as functional as the one you would find in Microsoft Excel, in respect of that I've kept the article content to a minimum, expect it grow in the coming months.

Expect bugs and lack of functionality these items will be addressed in future releases.

What's missing:

  • Image alignment in cells
  • Limited events
  • Specialized Cells
  • A whole raft of other stuff

If you would like to contribute to this project, email me using the discussion thread below. I'm looking really for 2 other people who would have good GUI and design skills.

Design

The grid is primary to be used as a control and could be optionally used a straight class. Lets take a look at a simplistic class design.

I've excluded properties and methods here, these will be documented at a later stage.

Example of use

virtual public void Demo()
{

    gridCtrl.LockUpdates = true;

    for (int r=0; r < 30; r++)
    gridCtrl.AddRow();

    for (int c=0; c < 30; c++)
        gridCtrl.AddColumn();

    int ii=0;

    int i=255;
    for (int r=1;r < gridCtrl.rowList.Count;r++)
    {
        i = 255;
        for (int c=1;c < gridCtrl.colList.Count;c++)
        {
            gridCtrl.GetCell(r,c).Value = ii++;
            gridCtrl.GetCell(r,c).BackColor = Color.FromArgb(i,i,255);;
            i-=5;
        }
    }

    gridCtrl.SetFixedRowCount(1);
    gridCtrl.SetFixedColumnCount(1);


    gridCtrl.GetRow(2).Size = 40;
    gridCtrl.GetColumn(1).Size = 180; 
    gridCtrl.GetRow(8).Visible = false;

    gridCtrl.GetRow(17).Size = 40;

    gridCtrl.GetCell(1,4).BackColor = Color.Cornsilk;
    gridCtrl.GetCell(2,4).BackColor = Color.CornflowerBlue;
    gridCtrl.GetCell(3,4).BackColor = Color.Coral;
    gridCtrl.GetCell(4,4).BackColor = Color.CadetBlue;

    gridCtrl.GetCell(1,1).HorizontalAlignment = 
      Cell.HorizontalAlignmentType.Left;
    gridCtrl.GetCell(1,1).Value = "Left";
    gridCtrl.GetCell(1,1).TextColor = Color.Blue;
    gridCtrl.GetCell(1,1).FontName = "System";

    gridCtrl.GetCell(2,1).HorizontalAlignment = 
      Cell.HorizontalAlignmentType.Center;
    gridCtrl.GetCell(2,1).Value = "Center";
    gridCtrl.GetCell(3,1).HorizontalAlignment =
      Cell.HorizontalAlignmentType.Right;
    gridCtrl.GetCell(3,1).Value = "Right";

    gridCtrl.GetCell(4,1).VerticalAlignment = 
      Cell.VerticalAlignmentType.Top;
    gridCtrl.GetCell(4,1).Value = "Top";
    gridCtrl.GetCell(5,1).VerticalAlignment = 
      Cell.VerticalAlignmentType.Center;
    gridCtrl.GetCell(5,1).Value = "Center";
    gridCtrl.GetCell(6,1).VerticalAlignment = 
      Cell.VerticalAlignmentType.Bottom;
    gridCtrl.GetCell(6,1).Value = "Bottom";

    gridCtrl.GetCell(2,2).FontStyle = FontStyle.Bold;
    gridCtrl.GetCell(2,3).FontStyle = FontStyle.Italic;
    gridCtrl.GetCell(2,4).FontStyle = FontStyle.Underline;
    
    gridCtrl.GetCell(12,12).TipText = "Cell";


    Cell cell = gridCtrl.GetCell(7,1);
    cell.TextColor = Color.Yellow;
    cell.BackColor = Color.Black;
    cell.Value = "Funny";



    gridCtrl.GetRow(4).CanResize = false;
    gridCtrl.GetColumn(4).CanResize = false;


    gridCtrl.GetCell(9,1).FontName = "Wingdings";
    
    gridCtrl.GetCell(17,1).Image = new Bitmap(GetType(), "image1.bmp");

    gridCtrl.LockUpdates = false;
    gridCtrl.AdjustScrollbars();
    Invalidate();
}

History

  • 1.0 - 12 September 2003 - Initial Release.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Norm .net

Chief Technology Officer
Software Kinetics
United Kingdom United Kingdom

Member

Follow on Twitter Follow on Twitter



Software Kinetics
are experts in developing customised and bespoke applications and have expertise in the development of desktop, mobile and internet applications on Windows.

We specialise in:

  • User Interface Design
  • Desktop Development
  • Windows Phone Development
  • Windows Presentation Framework
  • Windows Forms
  • Windows Communication Framework
  • Windows Services
  • Network Applications
  • Database Applications
  • Web Development
  • Web Services
  • Silverlight
  • ASP.net
 
Visit Software Kinetics

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 Pinmemberr_pippi5:01 22 Mar '11  
GeneralMy vote of 1 PinmemberRyleigh7:40 27 Mar '09  
GeneralRe: My vote of 1 PingroupNorm .net4:43 20 May '09  
Questionchange name of headers Pinmemberamrsoft12323:57 24 Mar '09  
Generalhardcoded paths PinmemberKen Mazaika5:00 26 Sep '07  
Generalsmall bug PinmemberPramod Sivanandan23:21 26 Dec '06  
GeneralDisplaying data in grid PinmemberGreg Schroder8:25 15 Jul '04  
GeneralRe: Displaying data in grid PinmemberTim Kohler8:54 15 Jul '04  
GeneralRe: Displaying data in grid PinmemberMike Osbahr9:37 15 Jul '04  
GeneralTextHeight Property Pinmemberandyj18323:49 9 Jun '04  
GeneralRe: TextHeight Property Pinmembernorm.net4:21 22 Jun '04  
GeneralVirtual Grid Architecture PinsussAnonymous5:42 9 Jan '04  
GeneralRe: Virtual Grid Architecture PinmemberNorm Almond0:19 12 Mar '04  
QuestionHow to Make it Redraw a Cell PinmemberSudhir Bhat2:04 31 Dec '03  
AnswerRe: How to Make it Redraw a Cell PinmemberNorm Almond5:39 31 Dec '03  
Generaluser control PinmembernavyC512:48 27 Dec '03  
GeneralRe: user control PinsussAnonymous14:07 30 Dec '03  
QuestionHow to modify the header ? PinmemberThierry Parent1:32 16 Dec '03  
AnswerRe: How to modify the header ? PinmemberNormski1:56 25 Dec '03  
QuestionRe: How to modify the header ? Pinmemberamrsoft12323:57 24 Mar '09  
GeneralRightToLeft PinsussAnonymous20:30 15 Dec '03  
GeneralWinForms DataGrid Sort Indicator Pinmemberkkaps11:10 15 Dec '03  
Generalsuggestion: complex headers Pinmemberbluemiracoli3:47 15 Dec '03  
Generalsuggestion: complex headers Pinmemberbluemiracoli3:37 15 Dec '03  
GeneralSmall bug PinmemberThierry Parent22:11 14 Dec '03  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 12 Dec 2003
Article Copyright 2003 by Norm .net
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid