コード例 #1
0
        public static void ChangeValue(object sender, DataGridViewCellEventArgs e, object[] arguments)
        {
            if (arguments.Length < 2)
            {
                throw new ArgumentException("Arguments less 2", nameof(arguments));
            }

            try
            {
                var view = (TView)sender;
                var row  = view.GetRow(e.RowIndex);
                if (row == null)
                {
                    return;
                }

                var column = (DataGridViewColumn)arguments[0];
                var value  = arguments[1];

                row.SetValue(column, value);
            }
            catch (Exception exception)
            {
                MessageBoxUtilities.ShowException(exception);
            }
        }
コード例 #2
0
        public static void EditUnitsColumn(object sender, EventArgs e, params object[] arguments)
        {
            if (arguments.Length < 5)
            {
                throw new ArgumentException("Objects less than 5", nameof(arguments));
            }

            try
            {
                var valueColumn     = (DataGridViewColumn)arguments[0];
                var unitsColumn     = (DataGridViewColumn)arguments[1];
                var rangeColumn     = (DataGridViewColumn)arguments[2];
                var customUnits     = (CustomUnits)arguments[3];
                var predicate       = (Func <Unit, bool>)arguments[4];
                var rangeTextColumn = arguments.Length >= 6 ? (DataGridViewColumn)arguments[5] : null; //Optional

                var view  = (TView)sender;
                var row   = view.CurrentRow;
                var value = GetVariableValue(row, valueColumn, unitsColumn, rangeColumn, customUnits);
                var form  = new Forms.SelectUnitsForm(value.Unit, value.CustomUnits, predicate);
                if (form.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                var newUnit  = form.SelectedUnit;
                var newValue = value.ConvertValue(newUnit, form.CustomUnits);
                customUnits = form.CustomUnits;

                view.ChangeValidationArguments(
                    unitsColumn, valueColumn, unitsColumn, customUnits);
                view.ChangeValidationArguments(
                    unitsColumn, valueColumn, unitsColumn, customUnits);

                view.ChangeEditArguments(
                    unitsColumn, valueColumn, unitsColumn, rangeColumn,
                    customUnits, predicate, rangeTextColumn);

                row.SetValue(unitsColumn, newUnit, withoutValidation: true);
                row.SetValue(valueColumn, newValue);

                if (rangeTextColumn != null)
                {
                    row.SetValue(rangeTextColumn, newUnit);
                }

                // If from analog to digital or from digital to analog
                if (value.Unit.IsDigital() != newUnit.IsDigital())
                {
                    row.SetCell(valueColumn, GetValueCellForUnit(newValue, newUnit));
                }

                view.ValidateRow(row);
            }
            catch (Exception exception)
            {
                MessageBoxUtilities.ShowException(exception);
            }
        }
コード例 #3
0
        public static void EditBoolean(object sender, EventArgs e)
        {
            try
            {
                var view = (TView)sender;
                var cell = view.CurrentCell;
                cell.Value = !((bool)cell.Value);

                view.ValidateCell(cell);
            }
            catch (Exception exception)
            {
                MessageBoxUtilities.ShowException(exception);
            }
        }
コード例 #4
0
        public static void EditValue(object sender, EventArgs e, params object[] arguments)
        {
            if (arguments.Length < 3)
            {
                throw new ArgumentException("Objects less than 3", nameof(arguments));
            }

            try
            {
                var unitsColumn = (DataGridViewColumn)arguments[0];
                var rangeColumn = (DataGridViewColumn)arguments[1];
                var customUnits = (CustomUnits)arguments[2];

                var view = (TView)sender;
                var row  = view.CurrentRow;
                var cell = view.CurrentCell;
                try
                {
                    var value = GetVariableValue(row, cell.OwningColumn, unitsColumn, rangeColumn,
                                                 customUnits);
                    if (value.Unit.IsDigital())
                    {
                        cell.Value = value.GetInverted().ToString();
                    }
                    else
                    {
                        view.BeginEdit(false);
                    }
                }
                catch (Exception)
                {
                    view.BeginEdit(false);
                }

                view.ValidateCell(cell);
            }
            catch (Exception exception)
            {
                MessageBoxUtilities.ShowException(exception);
            }
        }
コード例 #5
0
        public static void EditEnum <T>(object sender, EventArgs e) where T
        : struct, IConvertible
        {
            try
            {
                if (!typeof(T).IsEnum)
                {
                    throw new ArgumentException("T must be an enumerated type");
                }

                var view = (TView)sender;
                var cell = view.CurrentCell;
                cell.Value = ((T)cell.Value).NextValue();

                view.ValidateCell(cell);
            }
            catch (Exception exception)
            {
                MessageBoxUtilities.ShowException(exception);
            }
        }
コード例 #6
0
        public static void EditColor(object sender, EventArgs e)
        {
            try
            {
                var view   = (TView)sender;
                var cell   = view.CurrentCell;
                var dialog = new ColorDialog();
                dialog.Color = (Color)cell.Value;
                if (dialog.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                cell.Value = dialog.Color;

                view.ValidateCell(cell);
            }
            catch (Exception exception)
            {
                MessageBoxUtilities.ShowException(exception);
            }
        }