Обновление форм в C # - PullRequest
       1

Обновление форм в C #

2 голосов
/ 08 июля 2011

У меня есть форма с несколькими текстовыми полями и полями. Когда я нажимаю кнопку «Сохранить и создать», я хочу очистить все текстовые поля и установить в поле выбранный индекс значение 0. Я не хочу использовать как это txtAddress = "". Пожалуйста, помогите мне!

Ответы [ 6 ]

1 голос
/ 08 июля 2011

В событии onClientClick кнопки вызовите функцию JavaScript ResetAll (), в которой вы можете сбросить значения элементов управления. Самый простой и быстрый.

1 голос
/ 08 июля 2011

Вы хотите сделать это ↓

       var lstTextbox = from p in controls
           where p is System.Windows.Forms.TextBox
           select p as System.Windows.Forms.TextBox;

        foreach (var txt in lstTextbox)
            txt.Clear();
1 голос
/ 08 июля 2011

Проверьте это: http://www.hariscusto.com/programming/reset-all-controls-on-forms/

Но вы не можете всегда следовать этому, потому что иногда ваши формы имеют привязку из базы данных, такую ​​как привязка со списком или привязка к сетке с обновленным материалом.Таким образом, вы должны создать функцию самостоятельно, откуда вы установите пустое текстовое поле и заново привязать элементы управления привязкой из базы данных.

0 голосов
/ 08 июля 2011
    private List<Binding> bindingCollection = new List<Binding>();

    private void ClearCurrentDatabindings()
    {
        if (bindingCollection.Count > 0)
        {
            foreach (Binding binding in bindingCollection)
            {
                binding.Control.DataBindings.Clear();
            }

            bindingCollection.Clear();
        }
    }

    private void BindTextBox(object target, string targetProperty, 
           Control controlToBind )
    {
        Binding binding = new Binding("Text", target, property);
        control.DataBindings.Add(binding);

        bindingCollection.Add(binding);
    }

Добавляя свои данные, вы делаете это:

BindTextBox(customer, "Name" txt_CustomerName);

Когда вы хотите очистить все:

ClearCurrentDatabindings()

Если вы не привязываете данные таким образом (и я вижу причину этого не делать), то вы должны сделать это вручную или создать аналогичные методы, как SetTextboxText(txt_Name, "some text"), которые зарегистрируют все ваши элементы управления в коллекции, которую вы сможете очистить позже. .

0 голосов
/ 08 июля 2011

Что вы можете сделать, это добавить все текстовые поля в массив, а затем перебрать массив и установить для свойства .text значение "" для каждого из них.То же самое нужно и для ваших комбо-боксов.

К сожалению, нет волшебного ClearAllMyTextboxesAndResetMyComboBoxes() метода.

0 голосов
/ 08 июля 2011
  1. Если у вас есть данные для элементов управления в форме, просто очистите данные, связанные с этими элементами управления
  2. Если нет, я боюсь, что вы должны назначить пустую строку для TextBox, как вы сказали. Может быть, вы можете создать итерацию над элементами управления.

    foreach (Управление Ctrl в этом. Контроль) { if (ctrl - это TextBox) ((TextBox) ctrl) .Text = string.Empty; иначе если (Ctrl - SoemthigElse) // сделать что-то еще для другого элемента управления }

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