Как вызвать форму, когда в проекте есть 3 формы и передача данных между формами на C #?
-
06-07-2019 - |
Вопрос
У меня есть 3 формы в моем проекте form1 , form2 , form3 , и все шло гладко, теперь я добавил еще одну в мой проект form4.Первые три формы уже связаны через ShowDialog().
Я не хочу прикасаться к файлу Program.cs.
Как я могу сначала вызвать форму 4 в качестве начальной формы? Более ранняя форма 1 была первой формой, появившейся в моем проекте.
Также у меня есть 2 переключателя в моей форме1, rdb1 и rdb2.В моем form2 у меня есть OpenFileDialog, прикрепленный к кнопке Выбора.Теперь я хочу, когда пользователь выбирает rdb1 в form1, тогда фильтр OpenFileDialog в form2 должен открывать файлы только с расширением ".XML" в качестве расширения, а когда в Form1 выбран rdb2, тогда в Form2 могут быть открыты только файлы ".TXT".
Я такой и есть не удается найти синтаксис для этого в intellisense не могли бы вы, пожалуйста, помочь?
Заранее благодарю..
Решение
Можете ли вы объяснить, почему вы не хотите прикасаться к своему файлу Program.cs?Именно здесь вы меняете стартовую форму.
Измените:
Application.Run(new Form1());
Для:
Application.Run(new Form4());
Во-вторых, вы можете установить фильтры в Open- и SaveFileDialog, используя свойство Filter.Установите для него значение, подобное этому:
XML Files|*.xml
Или для текста:
Text Files|*.txt
Отредактировано для добавления:
Чтобы сделать это из другой формы:
class Form1 {
Form2 form2;
void Form1_Load(object sender, EventArgs e) {
form2 = new Form2();
}
void rdb1_CheckedChanged(object sender, EventArgs e) {
if (rdb1.Checked)
form2.openFileDialog1.Filter = "XML Files|*.xml";
else
form2.openFileDialog1.Filter = "Text Files|*.txt";
}
}
Убедитесь, что вы установили для свойства Modifiers openFileDialog1 в конструкторе Form2 значение "Public" или "Internal", чтобы разрешить доступ к нему извне самого класса.
Другие советы
Вы должны прикоснуться к program.cs. Вот где создается и запускается исходная форма.
Создайте новый проект winforms и откройте program.cs. Вы можете увидеть, где Application.Run вызывается с экземпляром формы запуска. Это то, что вы должны сделать.
Не бойся. Все будет хорошо.
<Ч>В ответ на комментарий:
Событие Form1_Load вызывается внутри Form1 с помощью Form1. Вы должны вернуться вверх по цепочке вызовов и найти, где создается Form1 и передается в Application.Run. И это в program.cs.
Сделай это. А потом иди получить копию CLR Via C #. Вы не пожалеете об этом (если пропустите первые несколько глав!)
Как я могу сначала вызвать форму 4 как форму запуска? Р>
Я не хочу трогать файл Program.cs.
Почему вы не хотите трогать Program.cs? Экземпляр формы, переданный в Application.Run (..), определяет форму запуска.