C # отключить список из родительской формы - PullRequest
1 голос
/ 14 декабря 2010

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

_child.listBox1.Enabled = false;

Но, похоже, это не отключить его._child - это ссылка на объект дочерней формы mdi.Почему не работает и как это исправить?

Ответы [ 3 ]

1 голос
/ 14 декабря 2010

_child вероятно относится к другому экземпляру дочерней формы.

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

0 голосов
/ 14 декабря 2010

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

Предположим, что в какой-то момент в будущем вам придется изменить внутренний ListBox на другой тип, например ListView, чтобы добавить некоторые функции.

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

Но если вы выберете метод написания кода, такой как _client.listbox1.Enabled = false;, вам придется просмотреть все фрагменты кода, которые касаются ListBox, и обновить их.

Очень важный принцип в дизайне - избегать предоставления внутренних деталей реализации класса тем, кто должен его использовать. В этом случае вам будет полезно, если родительской форме не нужно будет знать, что список реализован как ListBox.

0 голосов
/ 14 декабря 2010

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

Я полагаю, что здесь listBox1 является приватным (который используется по умолчанию, если вы создалиВаша форма, используя VS конструктор)

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