Изменение модификатора от общего к внутреннему. .Net намеренно использует частный модификатор вместо публики из-за предотвращения любого незаконного доступа к вашим методам/свойствам/элементам управления из вашего проекта. Фактически, публичный модификатор может быть доступен везде, поэтому они действительно опасны. Любое тело из вашего проекта может получить доступ к вашим методам/свойствам. Но во внутреннем модификаторе никакие тела (другие из вашего текущего проекта) не могут получить доступ к вашим методам/свойствам.
Предположим, вы создаете проект с несколькими секретными полями. Поэтому, если эти поля доступны из вашего проекта, это может быть опасно и против ваших первоначальных идей. Как одна хорошая рекомендация, я могу всегда использовать внутренний модификатор вместо публичного модификатора.
Но некоторые странные!
Я должен также указать в VB.Net, в то время как наши методы/свойства по-прежнему являются частными, он может быть доступен из других форм/классов, вызывая форму как переменную без каких-либо проблем.
Я не знаю, почему в этом языке программирования поведение отличается от C#. Поскольку мы знаем, что оба используют одну и ту же платформу, и они утверждают, что они почти та же платформа Back end, но, как вы видите, они по-прежнему ведут себя по-другому.
Но я решил эту проблему с двумя подходами. Или; с помощью интерфейса (который не является рекомендовать, как вы знаете, интерфейсы обычно требуется публичный ключ, и используя общественный модификатор не рекомендуется (Как я уже говорил выше)),
Или
Объявить всю форму где-то статический класс и статическая переменная, и есть еще внутренний модификатор. Затем, когда вы предполагаете использовать эту форму для показа пользователям, передайте новую конструкцию Form() этому статическому классу/переменной. Теперь он может быть доступен везде, где вы хотите. Но вам все еще нужно что-то еще. Вы также указываете свой внутренний модификатор элемента в файле конструктора формы. Пока ваша форма открыта, ее можно найти везде. Он может работать для вас очень хорошо.
Рассмотрите этот пример.
Предположим, вы хотите получить доступ к TextBox формы.
Итак, первое задание - объявление статической переменной в статическом классе (причина статичности - простота доступа без использования нового ключевого слова в будущем).
Далее перейдите к классу дизайнеров этой Формы, который предполагает доступ к другим формам. Измените его объявление модификатора TextBox от частного к внутреннему. Не волнуйся; .Net не изменит его снова на частный модификатор после изменения.
В-третьих, если вы хотите вызвать эту форму для открытия, то передайте новую конструкцию формы этой статической переменной - >> static class.
Четвертый; из любых других Форм (где бы вы ни были в своем проекте) вы можете получить доступ к этой форме/управлению, а From открыто. .
посмотреть на код ниже (У нас есть три объекта 1- статический класс (В нашем примере мы назовем его А)
2 - Любая форма еще, что хочет открыть Заключительную Форму (имеет TextBox) (. в нашем примере FormB)
3 - реальная форма, которую мы должны быть открыты, и мы предполагаем, чтобы получить доступ к своим внутренним TextBox1 (в нашем примере FormC)
Посмотрите на коды ниже:
.
внутренний статический класс A {
internal static FormC FrmC;
}
FormB ... { . . .
A.FrmC = новый FormC();
. . .
FormC (файл конструктора). , , {
internal System.Windows.Forms.TextBox TextBox1;
}
Вы можете получить доступ к этой статической переменной (здесь FormC) и внутреннего контроля (Здесь Textbox1), где и когда вы хотите, в то время как FormC открыт.
Любой комментарий/идея дайте мне знать. Я рад еще раз услышать от вас или любого другого человека эту тему. Честно говоря, у меня были некоторые проблемы, связанные с этой упомянутой проблемой в прошлом. Лучший способ - это второе решение, на которое я надеюсь, что он может сработать для вас. Дайте мне знать любую новую идею/предложение.
Спасибо и наилучшие пожелания
Мансур Бозоргмехр
[email protected]
Убедитесь, что вы поместили это в свой класс, который принимает форму в конструкторе. Он должен реализовать интерфейс IDisposable и быть отделенным по свойствам по завершении. Он также должен использовать отслеживание ссылок (увеличение/уменьшение целого числа, поэтому рекурсивный вызов его не вызовет проблем) и только скрывает элементы управления, когда это идет от 0 до 1. И только показывая их снова, когда он идет от 1 до 0. – TamusJRoyce 2011-10-03 13:55:12
Получаете ли вы доступ к этим элементам управления извне из отдельного потока? – Tanerax 2008-08-12 14:50:43