Я пытаюсь открыть панель, которая находится в основной форме (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(); означает, что вы создаете новую форму. Вам нужно сохранить ссылку на существующую основную форму и использовать ее.
Это UserControl, который должен вызывать общедоступное событие, когда что-то происходит внутри. Подпишитесь на это событие в своей форме Form1 и, когда событие возникнет, вызовите свой метод. Пример здесь: Как узнать в форме имя кнопки, нажатой в UserControl





Предполагая, что 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() получает строку?
var form = new Form1();обычно ошибка: это не дает вам доступа к фактической основной форме, а просто создает новый экземпляр, который даже не отображается. - Возможно, вы захотите создать переменнуюinternal f1 Form1в UO и установить ее, возможно, в форме нагрузка.