Как вызвать форму, когда есть 3 формы в проекте и передача данных между формами в C #? - PullRequest
0 голосов
/ 18 июня 2009

У меня есть 3 формы в моем проекте form1, form2, form3, и он работал гладко, теперь я добавил еще одну форму в свой проект form4. Первые три формы уже связаны через ShowDialog ().

Я не хочу трогать файл Program.cs.

Как мне сначала вызвать форму 4 в качестве начальной формы? Ранее форма 1 была первой формой, появившейся в моем проекте.

Также у меня есть 2 переключателя в моей форме rdb1 и rdb2. В моем form2 у меня есть openFileDialog, прикрепленный к кнопке Select. Теперь я хочу, чтобы, когда пользователь выбирает rdb1 в form1, тогда фильтр openFileDialog в form2 должен открывать файлы с расширением ".XML", а когда в Form1 выбран rdb2, то в Form2 можно открывать только файлы ".TXT".

Я не могу найти синтаксис для этого в intellisense, не могли бы вы помочь?

Заранее спасибо ..

Ответы [ 3 ]

2 голосов
/ 18 июня 2009

Можете ли вы объяснить, почему вы не хотите трогать ваш файл 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», чтобы разрешить доступ к нему извне самого класса.

1 голос
/ 18 июня 2009

Вы должны прикоснуться к program.cs. Вот где создается и запускается исходная форма.

Создайте новый проект winforms и откройте program.cs. Вы можете увидеть, где Application.Run вызывается с экземпляром формы запуска. Это то, что вы должны сделать.

Не бойся. Все будет хорошо.


В ответ на комментарий:

Событие Form1_Load вызывается в Form1 на Form1. Вы должны вернуться вверх по цепочке вызовов и найти, где создается Form1 и передается в Application.Run. И это в program.cs.

Сделай это. А потом иди получить копию CLR Via C #. Вы не пожалеете об этом (если пропустите первые пару глав!)

0 голосов
/ 18 июня 2009

Как мне сначала вызвать форму 4 в качестве формы запуска?

Я не хочу трогать файл Program.cs.

Почему вы не хотите трогать Program.cs? Экземпляр формы, переданный Application.Run (..), определяет форму запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...