Click here to Skip to main content
11,433,997 members (60,738 online)
Click here to Skip to main content

C# Grid

, 11 Dec 2003
Rate this:
Please Sign up or sign in to vote.
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

Share

About the Author

NormDroid
Software Developer (Senior) Software Kinetics
United Kingdom United Kingdom



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
Follow on   Twitter

Comments and Discussions

 
Bugi got a bug Pin
pclion22-Feb-15 23:23
memberpclion22-Feb-15 23:23 
GeneralMy vote of 5 Pin
r_pippi22-Mar-11 6:01
memberr_pippi22-Mar-11 6:01 
GeneralMy vote of 1 Pin
Ryleigh27-Mar-09 8:40
memberRyleigh27-Mar-09 8:40 
GeneralRe: My vote of 1 Pin
Norm .net20-May-09 5:43
groupNorm .net20-May-09 5:43 
Questionchange name of headers Pin
amrsoft12325-Mar-09 0:57
memberamrsoft12325-Mar-09 0:57 
Generalhardcoded paths Pin
Ken Mazaika26-Sep-07 6:00
memberKen Mazaika26-Sep-07 6:00 
Generalsmall bug Pin
Pramod Sivanandan27-Dec-06 0:21
memberPramod Sivanandan27-Dec-06 0:21 
GeneralDisplaying data in grid Pin
Greg Schroder15-Jul-04 9:25
memberGreg Schroder15-Jul-04 9:25 
GeneralRe: Displaying data in grid Pin
Tim Kohler15-Jul-04 9:54
memberTim Kohler15-Jul-04 9:54 
GeneralRe: Displaying data in grid Pin
Mike Osbahr15-Jul-04 10:37
memberMike Osbahr15-Jul-04 10:37 
GeneralTextHeight Property Pin
andyj18329-Jun-04 4:49
memberandyj18329-Jun-04 4:49 
GeneralRe: TextHeight Property Pin
norm.net22-Jun-04 5:21
membernorm.net22-Jun-04 5:21 
GeneralVirtual Grid Architecture Pin
Anonymous9-Jan-04 6:42
sussAnonymous9-Jan-04 6:42 
GeneralRe: Virtual Grid Architecture Pin
Norm Almond12-Mar-04 1:19
memberNorm Almond12-Mar-04 1:19 
QuestionHow to Make it Redraw a Cell Pin
Sudhir Bhat31-Dec-03 3:04
memberSudhir Bhat31-Dec-03 3:04 
AnswerRe: How to Make it Redraw a Cell Pin
Norm Almond31-Dec-03 6:39
memberNorm Almond31-Dec-03 6:39 
Generaluser control Pin
navyC527-Dec-03 13:48
membernavyC527-Dec-03 13:48 
GeneralRe: user control Pin
Anonymous30-Dec-03 15:07
sussAnonymous30-Dec-03 15:07 
QuestionHow to modify the header ? Pin
Thierry Parent16-Dec-03 2:32
memberThierry Parent16-Dec-03 2:32 
AnswerRe: How to modify the header ? Pin
Normski25-Dec-03 2:56
memberNormski25-Dec-03 2:56 
QuestionRe: How to modify the header ? Pin
amrsoft12325-Mar-09 0:57
memberamrsoft12325-Mar-09 0:57 
GeneralRightToLeft Pin
Anonymous15-Dec-03 21:30
sussAnonymous15-Dec-03 21:30 
GeneralWinForms DataGrid Sort Indicator Pin
kkaps15-Dec-03 12:10
memberkkaps15-Dec-03 12:10 
Generalsuggestion: complex headers Pin
bluemiracoli15-Dec-03 4:47
memberbluemiracoli15-Dec-03 4:47 
Generalsuggestion: complex headers Pin
bluemiracoli15-Dec-03 4:37
memberbluemiracoli15-Dec-03 4:37 

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.

| Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.150428.2 | Last Updated 12 Dec 2003
Article Copyright 2003 by NormDroid
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid