//------------------------------------------------------------------------------------- #region << Static Methods >> /// <summary> /// Отображает контрол. /// </summary> /// <param name="parent">Родительский контрол, относительно которого эмулируется модальность.</param> /// <param name="caption">Текст заголовка контрола.</param> /// <param name="image">Изображение заголовка контрола.</param> /// <param name="text">Основной текст контрола.</param> /// <param name="value">Объект, содержащий значение ввода.</param> /// <param name="format">Формат данных ввода.</param> /// <param name="formatException">Строка символов исключений формата ввода.</param> /// <returns>DialogResult.OK или DialogResult.Cancel</returns> public static DialogResult Show(Control parent, ref string value, string caption = "Ввод значения", string text = "Введите новое значение:", Image image = null, TextBoxFormat format = TextBoxFormat.NotSet, string formatException = "") { SimModalInputBox box = new SimModalInputBox(); box.CaptionText = caption; box.CaptionImage = image; box.Text = text; box.Value = value; box.ValueFormat = format; box.ValueFormatException = formatException; box.Show(parent); while (box.result == DialogResult.None && box.Visible) { if (box.IsDisposed || parent.IsDisposed || box.FindForm() == null) break; Application.DoEvents(); Thread.Sleep(50); } if (box.result == DialogResult.OK) value = box.Value; return box.result == DialogResult.None ? DialogResult.Cancel : box.result; }
//------------------------------------------------------------------------------------- private void ftgvView_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { try { if(e.RowIndex == -1 || e.ColumnIndex == -1) return; if(ftgvView.CurrentRow == null || e.RowIndex != ftgvView.CurrentRow.Index) ftgvView.CurrentCell = ftgvView[e.ColumnIndex, e.RowIndex]; ViewItem vi = (ViewItem)ftgvView.Rows[e.RowIndex].GetData(); if(vi.mi == null || (vi.mi.MemberType == MemberTypes.Property && ((PropertyInfo)vi.mi).CanWrite == false)) return; SimModalInputBox box = new SimModalInputBox(); box.Parent = PanelBack; box.DialogClosed += new DialogClosedEventHandler(ObjectEdit_DialogClosed); box.CaptionImage = global::Sim.AdminForms.Properties.Resources.Object; box.CaptionText = "Изменение значения объекта"; box.Text = "Введите текстовый эквивалент значения объекта или [объект из хранилища]:"; box.Value = vi.Value.ToString(); box.Tag = vi; box.Show(); } catch(Exception Err) { ModalErrorBox.Show(Err, PanelBack); } }