Can't find what you're looking for?

Contact us or post in our forums and we'll help you find an answer.

Make ReadOnly cells scrollable in C1FlexGrid


How to make ReadOnly cells scrollable in C1FlexGrid.

Steps to Complete:

You can make normal cells scrollable by taking it as a textbox at the time of Editing and make that textbox scrollable but what if the cells are non-editable. Below is given the trick to achieve the same when cells are non-editable:

1. Create a TextBox and add it to the child control of the grid.

private TextBox textBoxForDisplay;
  this.textBoxForDisplay = new TextBox();
  this.textBoxForDisplay.ScrollBars = ScrollBars.Both;
   this.textBoxForDisplay.Multiline = true;
   //Make it readonly:
   this.textBoxForDisplay.ReadOnly = true;
   this.textBoxForDisplay.Visible = false;

2. Handle the AfterSelChange event of FlexGrid to show the TextBox on the selected ReadOnly cell.

private void C1FlexGrid1_AfterSelChange(object sender, C1.Win.C1FlexGrid.RangeEventArgs e)
            if (e.NewRange.LeftCol == 2)
             this.textBoxForDisplay.Visible = true;
           //Position of cell:
             Rectangle rectCell = this.c1FlexGrid1.GetCellRect(e.NewRange.TopRow,      
           this.textBoxForDisplay.Location = rectCell.Location;
           this.textBoxForDisplay.Size = rectCell.Size;
          //Write Text to textbox:
          this.textBoxForDisplay.Text = (string)this.c1FlexGrid1[e.NewRange.TopRow,  
        this.textBoxForDisplay.Visible = false;

3. In the GotFocus event of TextBox, hide the blinking caret in the ReadOnly textbox cell as follows.

using System.Runtime.InteropServices;
private static extern bool HideCaret(IntPtr hWnd);
private void TextBoxForDisplay_GotFocus(object sender, EventArgs e)
   if (textBoxForDisplay.ReadOnly == true)

Get the Latest Version of WinForms Edition
Download the Free Trial Now