C # выполняет метод CLICK в невидимой форме

#c# #winforms

#c# #winforms

Вопрос:

Я застрял на использовании PerformClick метода. У меня есть основная форма, которая вызывается mymainform , и у меня есть несколько подчиненных форм. При загрузке основной формы я создаю подчиненные формы и скрываю их с помощью видимости формы и получаю доступ к некоторым элементам подчиненных форм.

Моя проблема заключается в нажатии кнопки на подчиненной форме1 из основной формы. Я написал приведенный ниже код, и он не сработал. Обычно DayModeButton изменяет логическое значение; isDay = !isDay

После нажатия кнопки button1 в mainform логическое значение не изменяется isDay .

 private void button1_Click(object sender, EventArgs e)
    {
        
        
        mysubform1.DayModeButton.PerformClick();
        button1.Text = mysubform1.isDay.ToString();
       
    }
 

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

 private void button1_Click(object sender, EventArgs e)
    {
        
        mysubform1.Visible=true;
        mysubform1.DayModeButton.PerformClick();
        button1.Text = mysubform1.isDay.ToString();
        mysubform1.Visible=false;
    }
 

Кто-нибудь может мне помочь в выполнении Click события в невидимых формах?

Спасибо

Комментарии:

1. Почему вы используете performClick в первую очередь? Это плохая привычка знать что-то о внутренних элементах (конкретной кнопке) в другой форме и пытаться это использовать. Я не понимаю, зачем вам это нужно. Укажите вашей подчиненной форме метод. Вызовите этот метод, если вам это нужно, и пусть ваша подчиненная форма также вызывает этот метод из обработчика нажатия кнопок. И в лучшем случае установите для всех элементов управления значение private в вашей подчиненной форме, чтобы вы (никто) не пытались вызвать их напрямую.

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

Ответ №1:

Убедитесь, что ваш DayModeButton is Public и not Private .

Комментарии:

1. Кнопка является общедоступной, и выполнить нажатие не работает должным образом. Я создал метод и вызываю его сейчас. Спасибо за вашу помощь.