StackOverFlow при работе с DataGridView
От: mill  
Дата: 11.03.12 15:47
Оценка:
Добрый день, пытаюсь написать обработку фокуса в табличке

m,n — глобальные переменные
n = ColumnCount — 1;
m = RowCount — 1;
...
private: System::Void PolynomTable_CellLeave(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {
             int k1 = e->ColumnIndex;
             int k2 = e->RowIndex;
          if (k1 == n) //
             {
                 if (k2 < m) PolynomTable->CurrentCell::set(PolynomTable[0,k2+1]);
             }
             else
             {
                 PolynomTable->CurrentCell::set(PolynomTable[k1+1,k2]);
             }
         }

компиляция работает, всё норм, а при вводе любой ячейки получаю StackOverFlowException.

Опытные программисты, подскажите что здесь сделано не так?
добавил разметку — Кодт
11.03.12 23:54: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт
Re: StackOverFlow при работе с DataGridView
От: mill  
Дата: 11.03.12 18:25
Оценка:
Здравствуйте, mill, Вы писали:

M>Добрый день, пытаюсь написать обработку фокуса в табличке


M>m,n — глобальные переменные

M>n = ColumnCount — 1;
M>m = RowCount — 1;
M>...
M>private: System::Void PolynomTable_CellLeave(System::Object^ sender, System::Windows::Forms::DataGridViewCellEventArgs^ e) {
M> int k1 = e->ColumnIndex;
M> int k2 = e->RowIndex;
M> if (k1 == n) //
M> {
M> if (k2 < m) PolynomTable->CurrentCell::set(PolynomTable[0,k2+1]);
M> }
M> else
M> {
M> PolynomTable->CurrentCell::set(PolynomTable[k1+1,k2]);
M> }
M> }

M>компиляция работает, всё норм, а при вводе любой ячейки получаю StackOverFlowException.


M>Опытные программисты, подскажите что здесь сделано не так?



---------------------------------------------------------------
В общем понял что CellLeave плохое событие для данной идеи.
Лучше подходит какой нибудь CellEndEdit.
Хотя ничего не получается, по нажатии Enter вдобавок к обработке события ещё и спускается вниз,
получается ход по диагонали.

Пришёл к выводу что проще пользоваться Tab и будет всё как задумывал.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.