C# WinForms - Связанные с данными простые компоненты с Отменяемой формой

Как я могу реализовать форму с простыми компонентами (текстовые поля, поля комбинированного списка) связанный со свойствами объекта и иметь, Сохраняют/Отменяют поддержку?

Я попробовал фрагмент кода по http://fgheysels.blogspot.com/2009/06/winforms-databinding-on-cancellable.html, но я не знаю то, что требуется, чтобы это работало, связывая со свойствами объектов.

Это - то, что я имею, но я не могу выяснить, как заставить кнопку отмены препятствовать тому, чтобы свойство объектов было обновлено. Свойства обновляются с любым значением, был в последний раз введен, даже когда кнопка отмены была нажата.

    public DocumentProperties(FileFormatReader fileReader)
    {
        binding = new BindingSource();
        binding.DataSource = fileReader.Header;
        bindingManager = BindingContext[binding.DataSource];

        unitComboBox.DataSource = Enum.GetNames(typeof(Constants.Units));
        unitComboBox.DataBindings.Add("SelectedIndex", binding.DataSource, "UnitNumberIndex");

        operatorTextBox.Text = fileReader.Header.OperatorName;
        operatorTextBox.DataBindings.Add("Text", binding, "OperatorName");

        binding.SuspendBinding();       // Doesnt work
   }

    private void okButton_Click(object sender, EventArgs e)
    {
        binding.ResumeBinding();
        this.DialogResult = DialogResult.OK;
    }

    private void cancelButton_Click(object sender, EventArgs e)
    {
        this.DialogResult = DialogResult.Cancel;
    }

Любые предложения о том, как сделать это, ценились бы.

1
задан Mark Stahler 6 August 2010 в 20:53
поделиться

2 ответа

Кэшируйте значение при его открытии и сбрасывайте его до кэшированного значения в обработчике кнопок отмены.

1
ответ дан 2 September 2019 в 22:22
поделиться

Объект, который вы связываете, должен реализовывать интерфейс IEditableObject, который имеет методы для начала, завершения и отмены редактирования.

1
ответ дан 2 September 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: