Изменить модификатор с публичного на внутренний. .Net намеренно использует приватный модификатор вместо публичного, потому что предотвращает любой незаконный доступ к вашим методам / свойствам / элементам управления из вашего проекта. На самом деле, публичный модификатор может быть доступен везде, поэтому они действительно опасны. Любое тело из вашего проекта может получить доступ к вашим методам / свойствам. Но во внутреннем модификаторе ни одно тело (кроме вашего текущего проекта) не может получить доступ к вашим методам / свойствам.
Предположим, вы создаете проект, в котором есть несколько секретных полей. Так что если эти поля доступны из вашего проекта, это может быть опасно и противоречит вашим первоначальным идеям. В качестве хорошей рекомендации могу сказать, что всегда используйте внутренний модификатор вместо публичного.
Но какой-то странный!
Я также должен сообщить об этом в VB.Net, хотя наши методы / свойства все еще закрыты, он может быть доступен из других форм / классов, вызывая форму как переменную без каких-либо проблем.
Я не знаю, почему в этом языке программирования поведение отличается от C #. Как мы знаем, оба используют одну и ту же платформу и утверждают, что они почти одинаковые серверные платформы, но, как вы видите, они по-прежнему ведут себя по-разному.
Но я решил эту проблему двумя способами. Или; используя интерфейс (который, как вы знаете, не рекомендуется, для интерфейсов обычно требуется общедоступный модификатор, а использование общедоступного модификатора не рекомендуется (как я уже говорил выше)),
или
Объявите всю форму в статическом классе и статической переменной, и все еще есть внутренний модификатор. Затем, когда вы предполагаете использовать эту форму для показа пользователям, передайте новую конструкцию Form()
этому статическому классу / переменной. Теперь он может быть доступен везде, где вы хотите. Но вам все еще нужно что-то еще.
Вы также объявляете свой внутренний модификатор элемента в Designer File of Form. Пока ваша форма открыта, она может быть доступна везде. Это может работать для вас очень хорошо.
Рассмотрим этот пример.
Предположим, вы хотите получить доступ к TextBox формы.
Итак, первое задание - это объявление статической переменной в статическом классе (причиной статического эффекта является простота доступа без использования новых клавиш в будущем).
Во-вторых, перейдите к классу дизайнеров той Формы, которая предполагает доступ к другим Формам. Измените объявление модификатора TextBox с частного на внутреннее. Не волнуйся; .Net никогда не изменяет его снова на приватный модификатор после вашего изменения.
В-третьих, когда вы хотите вызвать эту форму для открытия, передайте новую конструкцию формы этой статической переменной - >> статический класс.
В-четвертых; из любой другой формы (где бы вы ни находились в вашем проекте) вы можете получить доступ к этой форме / элементу управления, пока открыт From.
Посмотрите на код ниже (у нас есть три объекта.
1- статический класс (в нашем примере мы называем его A
)
2 - Любая другая форма, которая хочет открыть окончательную форму (в нашем примере это TextBox FormB
).
3 - Реальная форма, которую нам нужно открыть, и мы предполагаем доступ к ее внутренней TextBox1
(в нашем примере FormC
).
Посмотрите на коды ниже:
internal static class A
{
internal static FormC FrmC;
}
FormB ...
{
'(...)
A.FrmC = new FormC();
'(...)
}
FormC (Designer File) . . .
{
internal System.Windows.Forms.TextBox TextBox1;
}
Вы можете получить доступ к этой статической переменной (здесь FormC
) и ее внутреннему управлению (здесь Textbox1
), где и когда угодно, пока FormC
открыто.
Любой комментарий / идея, дайте мне знать. Я рад услышать от вас или кого-либо еще об этой теме больше. Честно говоря, у меня были некоторые проблемы, связанные с этой проблемой в прошлом. Наилучшим способом было второе решение, которое, я надеюсь, сработает для вас. Дайте мне знать любую новую идею / предложение.