Откройте панель формы внутри пользовательского контроля

Я пытаюсь открыть панель, которая находится в основной форме (form1), с помощью кнопки, которая находится внутри UserControl , но код запускается, но не включает панель основной формы. Можете вы помочь мне?

//UserControl code
private void BtnChangeStatusOrder_Click(object sender, EventArgs e)
    {
        Button seta = (Button)sender;
        var form = new Form1();
        form.EnabledPanel1(seta.Tag.ToString());
    }

//main form code
    public void EnabledPanel(string order)
        {
          
            panel1.Visible = true;
        }
открыть панель на главной форме, но панель работает только на форме Я понятия не имею, что это может означать..?! - var form = new Form1(); обычно ошибка: это не дает вам доступа к фактической основной форме, а просто создает новый экземпляр, который даже не отображается. - Возможно, вы захотите создать переменную internal f1 Form1 в UO и установить ее, возможно, в форме нагрузка.
TaW 22.03.2022 00:35

Написание var form = new Form1(); означает, что вы создаете новую форму. Вам нужно сохранить ссылку на существующую основную форму и использовать ее.

Enigmativity 22.03.2022 01:44

Это UserControl, который должен вызывать общедоступное событие, когда что-то происходит внутри. Подпишитесь на это событие в своей форме Form1 и, когда событие возникнет, вызовите свой метод. Пример здесь: Как узнать в форме имя кнопки, нажатой в UserControl

Jimi 22.03.2022 03:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Предполагая, что UserControl также содержится в Form1, вы можете использовать ВерхнийУровеньКонтроля для получения ссылки на форму:

private void BtnChangeStatusOrder_Click(object sender, EventArgs e)
{
    Button seta = (Button)sender;
    Form1 f1 = (Form1)this.TopLevelControl;
    f1.EnabledPanel1(seta.Tag.ToString());
}

*Почему EnabledPanel() получает строку?

Другие вопросы по теме