Как я могу очистить все элементы управления формы ребенка MDI? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть функция, которая очищает дочернюю форму, отличную от MDI, но когда я применяю ее к дочернему элементу MDI, она ничего не делает. Я безуспешно пытался решить эту проблему с нескольких точек зрения, надеясь, что стекопоток может помочь!

Я пробовал показанный код, я также пытался сослаться на дочерний элемент родителя текущей формы (который мне известен).

    public static void ResetAllControls(Control form)
    {
        foreach (Control control in form.Controls)
        {
            if (control is TextBox)
            {
                TextBox textBox = (TextBox)control;
                textBox.Text = "";
            }

            if (control is ComboBox)
            {
                ComboBox comboBox = (ComboBox)control;
                if (comboBox.Items.Count > 0)
                    comboBox.SelectedIndex = 0;
            }

            if (control is CheckBox)
            {
                CheckBox checkBox = (CheckBox)control;
                checkBox.Checked = true;
            }

            if (control is ListBox)
            {
                ListBox listBox = (ListBox)control;
                listBox.ClearSelected();
            }
        }
    }

Я ожидаю, что передача этого очистит все элементы управления формой, как это происходит со стандартными формами.

1 Ответ

1 голос
/ 24 мая 2019

Я почти уверен, что у вас есть какой-то контейнер для этого (например, Panel) и элементы управления находятся на этой панели.Form.Controls предоставит вам только те элементы управления, которые лежат непосредственно на форме.Так что вам придется делать это периодически:

public static void ResetAllControls(Control parent)
{
    foreach(var child in parent.Controls)
        ResetAllControls(child);

    if(parent is TextBox)
    {
        (parent as TextBox).Text = "";
        return;
    }
    //and so on
}
...