Infinite loop when setting RadGridView.CurrentColumn in RadGridView.CurrentCellChanged event.

0 Answers 5 Views
GridView
Bohdan
Top achievements
Rank 1
Bohdan asked on 18 Aug 2025, 08:52 AM | edited on 18 Aug 2025, 08:54 AM

Hello!
I had a chance to notice some strange behavior with setting CurrentColumn.

For instance I would like to change focused column, in case someone tries to focus on the wrong column. 

Let's review 2 cases:
Case #1 (without an issue):

1) User clicks on any cell (different from the current, for instance user cicked on column 2).
2) Grid tries to set Cell from column 2 as current.
3) RadGridView.CurrentCellChanged event is being triggered.
4) Method subscribed on RadGridView.CurrentCellChanged event sets CurrentColumn (for instance it sets 3 if Current one is not 3).
5) Grid sets Cell from third column as current.
6) Nothing is looped.

Case #2 (with issue):
1) Some Method from code sets CurrentColumn as 2 (different from the current one)
2) Grid tries to set Cell from column 2 as current
3) RadGridView.CurrentCellChanged event is being triggered.
4) Method subscribed on RadGridView.CurrentCellChanged event sets CurrentColumn (for instance it sets 3 if Current one is not 3).
5) Grid sets Cell from third column as current.
6) Loop has formed
6.1) Every RadGridView.CurrentCellChanged call it changes the input params:
call 1:
e.CurrentCell = (cell from column 2)
e.NewCell = (cell from column 3)
call 2:
e.CurrentCell = (cell from column 3)
e.NewCell = (cell from column 2)
call 3:
e.CurrentCell = (cell from column 2)
e.NewCell = (cell from column 3)
...

Code:

public partial class Form1 : Form
{
    private BindingSource bindingSource;
    public Form1()
    {
        InitializeComponent();
        InitializeGrid();

        radGridView1.CurrentCellChanged += RadGridView1_CurrentCellChanged;
    }

    private void RadGridView1_CurrentCellChanged(object sender, CurrentCellChangedEventArgs e)
    {
        if (radGridView1.CurrentColumn != radGridView1.Columns[2])
            radGridView1.CurrentColumn = radGridView1.Columns[2];
    }

    private void InitializeGrid()
    {
        bindingSource = new BindingSource();

        DataTable table = new DataTable();
        table.Columns.Add("Id", typeof(int));
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Age", typeof(int));

        table.Rows.Add(1, "Alice", 30);
        table.Rows.Add(2, "Bob", 25);
        bindingSource.DataSource = table;
        radGridView1.DataSource = bindingSource;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        radGridView1.CurrentColumn = radGridView1.Columns[1];
    }
}
Telerik version: 2025.2.520.48

Is the any restriction of using CurrentCellChanged event?
Is there any other way we can provide such functionality?

Thank You!

No answers yet. Maybe you can help?

Tags
GridView
Asked by
Bohdan
Top achievements
Rank 1
Share this question
or