/// <summary> /// Обработчик события - изменение значения в поле ввода /// </summary> /// <param name="obj">Объект, инициировавший событие (поле ввода)</param> /// <param name="ev">Аргумент события</param> private void tbCalcValue_onTextChanged(object obj, EventArgs ev) { FTable.FRUNK runk = m_zGraph_fTABLE.GetRunk(NAlg); bool bCalculate = false; string strVal = string.Empty; float[] pars = new float[(int)runk + 1]; for (int indx = 0; indx < pars.Length; indx++) { bCalculate = float.TryParse((Controls.Find(((INDEX_CONTROL)(indx + (int)INDEX_CONTROL.TEXTBOX_A1)).ToString(), true)[0] as TextBox).Text, NumberStyles.Any, CultureInfo.InvariantCulture, out pars[indx]); if (bCalculate == false) { break; } else { ; } } if (bCalculate == true) { strVal = m_zGraph_fTABLE.Calculate(NAlg, getRunkVariable(obj as TextBox), pars).ToString(@"F2"); } else { strVal = float.NaN.ToString(); } (Controls.Find(INDEX_CONTROL.TEXTBOX_F.ToString(), true)[0] as TextBox).Text = strVal; }
/// <summary> /// при пустой строке исключение. при любом другом знаке кроме цифр исключение.!!! /// </summary> /// <param name="obj"></param> /// <param name="ev"></param> private void tbCalcValue_onTextChanged(object obj, EventArgs ev) { FTable.FRUNK runk = m_zGraph_fTABLE.GetRunk(NAlg); float[] pars = new float[(int)runk + 1]; for (int indx = 0; indx < pars.Length; indx++) { pars[indx] = float.Parse((Controls.Find(((INDEX_CONTROL)(indx + (int)INDEX_CONTROL.TEXTBOX_A1)).ToString(), true)[0] as TextBox).Text, CultureInfo.InvariantCulture); } (Controls.Find(INDEX_CONTROL.TEXTBOX_REZULT.ToString(), true)[0] as TextBox).Text = m_zGraph_fTABLE.Calculate(NAlg, pars).ToString(@"F2"); }
/// <summary> /// Возвратить ранг изменившегося значения /// </summary> /// <param name="tbxValue">Поле ввода, в котором изменилось значение</param> /// <returns>Ранг изменившегося значения</returns> private FTable.FRUNK getRunkVariable(TextBox tbxValue) { FTable.FRUNK fRunkRes = FTable.FRUNK.UNKNOWN; for (INDEX_CONTROL indx = INDEX_CONTROL.TEXTBOX_A1; indx < INDEX_CONTROL.TEXTBOX_F; indx++) { if (tbxValue.Name.Equals(indx.ToString()) == true) { fRunkRes = (FTable.FRUNK)(indx - INDEX_CONTROL.TEXTBOX_A1); break; } else { ; } } return(fRunkRes); }
/// <summary> /// Обработчик события - изменение выбранной строки /// в отображении для таблицы со значениями /// </summary> /// <param name="obj">Объект, инициировавший событий (отображение таблицы значений)</param> /// <param name="ev">Аргумент события</param> private void dgvValues_onSelectionChanged(object obj, EventArgs ev) { DataGridView dgv = obj as DataGridView; FTable.FRUNK runk = FTable.FRUNK.F1; // для блокировки полей ввода TextBox tbValue = null; // элемент управления - поле для ввода текста int iSelIndex = dgv.SelectedRows.Count > 0 ? dgv.SelectedRows[0].Index : -1; if (!(iSelIndex < 0)) { // отменить обработку событий "изменение текста", очистить поля ввода калькулятора for (INDEX_CONTROL indx = INDEX_CONTROL.TEXTBOX_A1; indx < (INDEX_CONTROL.TEXTBOX_F + 0); indx++) { tbValue = Controls.Find(indx.ToString(), true)[0] as TextBox; if (indx < (INDEX_CONTROL.TEXTBOX_F + 0)) { tbValue.TextChanged -= tbCalcValue_onTextChanged; } else { ; } tbValue.Text = string.Empty; } runk = m_zGraph_fTABLE.GetRunk(NAlg); // установить новые значения в поля ввода для калькулятора for (INDEX_CONTROL indx = INDEX_CONTROL.TEXTBOX_A1; indx < (INDEX_CONTROL.TEXTBOX_F + 1); indx++) { tbValue = Controls.Find(indx.ToString(), true)[0] as TextBox; tbValue.Text = dgv.Rows[iSelIndex].Cells[(int)(indx - INDEX_CONTROL.TEXTBOX_A1)].Value.ToString(); } switch (runk) { case FTable.FRUNK.F1: // блокировать 2-ое, 3-е поле ввода (Controls.Find(INDEX_CONTROL.TEXTBOX_A2.ToString(), true)[0] as TextBox).Enabled = (Controls.Find(INDEX_CONTROL.TEXTBOX_A3.ToString(), true)[0] as TextBox).Enabled = false; break; case FTable.FRUNK.F2: // блокировать 3-е поле ввода (Controls.Find(INDEX_CONTROL.TEXTBOX_A2.ToString(), true)[0] as TextBox).Enabled = true; (Controls.Find(INDEX_CONTROL.TEXTBOX_A3.ToString(), true)[0] as TextBox).Enabled = false; break; case FTable.FRUNK.F3: // ничего не блокируется (Controls.Find(INDEX_CONTROL.TEXTBOX_A1.ToString(), true)[0] as TextBox).Enabled = (Controls.Find(INDEX_CONTROL.TEXTBOX_A2.ToString(), true)[0] as TextBox).Enabled = (Controls.Find(INDEX_CONTROL.TEXTBOX_A3.ToString(), true)[0] as TextBox).Enabled = true; break; default: break; } // восстановить обработчики событий for (INDEX_CONTROL indx = INDEX_CONTROL.TEXTBOX_A1; indx < (INDEX_CONTROL.TEXTBOX_F + 0); indx++) { (Controls.Find(indx.ToString(), true)[0] as TextBox).TextChanged += new EventHandler(tbCalcValue_onTextChanged); } } else { ; // нет ни одной выбранной строки } }
/// <summary> /// Обработчик события - изменение выбранной строки /// в отображении для таблицы с наименованями функций /// </summary> /// <param name="obj">Объект, инициировавший событий (отображение таблицы функций)</param> /// <param name="ev">Аргумент события</param> private void dgvnALG_onSelectionChanged(object obj, EventArgs ev) { DataGridView dgv = obj as DataGridView; //TextBox tbValue = null; FTable.FRUNK runk = FTable.FRUNK.F1; // для блокировки/снятия с отображения столбцов DataRow[] rowsNAlg = null; int iSelIndex = dgv.SelectedRows.Count > 0 ? dgv.SelectedRows[0].Index : -1; //Удалить все строки со значениями для прдыдущей функции dgv = Controls.Find(INDEX_CONTROL.DGV_VALUES.ToString(), true)[0] as DataGridView; dgv.Rows.Clear(); if (!(iSelIndex < 0)) { runk = m_zGraph_fTABLE.GetRunk(NAlg); rowsNAlg = m_tblEdit.Select(@"N_ALG='" + NAlg + @"'"); foreach (DataRow r in rowsNAlg) { dgv.Rows.Add(((float)r[@"A1"]).ToString(CultureInfo.InvariantCulture) , ((float)r[@"A2"]).ToString(CultureInfo.InvariantCulture) , ((float)r[@"A3"]).ToString(CultureInfo.InvariantCulture) , ((float)r[@"F"]).ToString(CultureInfo.InvariantCulture) , r[@"ID"] ); } switch (runk) { case FTable.FRUNK.F1: // блокировать/снять с отображения 2-ой, 3-ий столбец dgv.Columns[1].Visible = dgv.Columns[2].Visible = false; break; case FTable.FRUNK.F2: // блокировать/снять с отображения 3-ий столбец dgv.Columns[1].Visible = true; dgv.Columns[2].Visible = false; break; case FTable.FRUNK.F3: // ничего не блокируется dgv.Columns[0].Visible = dgv.Columns[1].Visible = dgv.Columns[2].Visible = true; break; default: break; } switch (runk) { case FTable.FRUNK.F1: case FTable.FRUNK.F2: case FTable.FRUNK.F3: m_zGraph_fTABLE.Draw(NAlg); break; default: break; } } else { ; } }