Как вызвать форму, когда в проекте есть 3 формы и передача данных между формами на C #?

StackOverflow https://stackoverflow.com/questions/1012631

  •  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 (..), определяет форму запуска.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top