private void buttonSelect_Click(object sender, EventArgs e)
        {
            var clsf = EditingControlDataGridView.CurrentCell.Value as Classifier;

            if (clsf == null || Classifier.Empty.Equals(clsf))
            {
                clsf = DebtDAO.FindNearestClassifier(EditingControlFormattedValue as string);
            }
            clsfForm.SelectedClassifier = clsf ?? Classifier.Empty;
            if (clsfForm.ShowDialog() == DialogResult.OK)
            {
                clsf = clsfForm.SelectedClassifier;
                if (clsf != null)
                {
                    EditingControlDataGridView.CurrentCell.Value = clsf;
                    EditingControlFormattedValue = clsf.MaskedCode;
                }
            }
        }
        private void maskedTextBox_TextChanged(object sender, EventArgs e)
        {
            if (EditingControlDataGridView != null)
            {
                EditingControlDataGridView.NotifyCurrentCellDirty(true);
            }
            EditingControlValueChanged = true;

            if (!DebtDAO.GetSettings().IsAutoPasteClassifier)
            {
                return;
            }
            //автоподстановка классификатора
            int    position = (int)caretField.GetValue(maskedTextBox) + 1;
            string code     = Classifier.RemoveMaskSymbols(Text.Substring(0, position));

            if (string.IsNullOrEmpty(code) || code.Length == Classifier.CodeLenght)
            {
                return;
            }

            var    clsf    = DebtDAO.FindNearestClassifier(code);
            string newCode = null;

            if (clsf != null)
            {
                newCode = clsf.MaskedCode;
            }
            else
            {
                newCode = code + new string('0', Classifier.CodeLenght).Substring(0, Classifier.CodeLenght);
            }
            position -= 1;
            Text      = newCode;
            if (0 <= position && position < maskedTextBox.MaskedTextProvider.Length)
            {
                caretField.SetValue(maskedTextBox, position);
            }
        }