#c_sharp #winforms
Из одной формы запускается другая при помощи подобного кода (по сути, стандартного): private void Show_Click(object sender, EventArgs e) { Child form1 = new Child(); form1.ShowDialog(); } Как узнать тип той формы, которая запустила Child? На основе этого должно определяться содержимое формы Child.
Ответы
Ответ 1
Ну раз @VladD считает не зазорным ответ с "отлупом" :) Старайтесь придерживаться одно-направленного потока информации: форма/класс, которая создает Child знает про Child, а Child не знает про форму/класс, которая его создает. (Что будет, если Child создается в методе класса, который не является формой? Подумаем.) Подавайте в конструктор класса Child, или устанавливайте как его свойство, индикатор поведения Child.Ответ 2
Никак. В C# нету легального метода узнать, кто вызвал данный код. Даже если бы это было можно, это плохая практика: это не поддаётся ни рефакторингу, ни тестированию. Пусть код, показывающий форму, сам конфигурируете её, передавая ей нужную информацию. В худшем случае это может быть просто this, в лучшем — специализированная структура данных, описывающая то, что нужно показать. Ещё более хорошим вариантом является вынесение бизнес-логики (при каких обстоятельствах нужно открыть новое окно, и что за информацию в нём показывать) из UI-кода (кода исходной формы), но это скорее всего потребует большой переработки проекта.
Комментариев нет:
Отправить комментарий