C # WinForms - Простые компоненты с привязкой к данным с формой Cancelable - PullRequest
1 голос
/ 07 августа 2010

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

Я пробовал фрагмент кода на 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;
    }

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

Ответы [ 2 ]

1 голос
/ 07 августа 2010

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

1 голос
/ 07 августа 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...