Где запросить требуемое расположение файла при запуске приложения Win Forms - PullRequest
1 голос
/ 18 марта 2010

У меня есть приложение, которое использует файл для хранения своих данных.

Я храню расположение файла в настройках приложения, поэтому при запуске имею два теста:

  1. У меня есть настройки для файла и
  2. Существует ли файл (если у меня есть настройка)

Если я проваливаю любой из тестов, я хочу попросить пользователя указать местоположение файла - механика проблемы не , я могу прочитать и записать настройки приложения, запустить диалоги и в противном случае запросить данные. Если пользователь отказывается выбирать файл (или хотя бы местоположение файла), я хочу выйти из приложения.

Моя проблема в том, где это сделать, т.е. в какой момент потока кода. В идеальном мире вы запускаете приложение, показываете заставку, загружаете основную форму и запускаете оттуда ... Я ищу общий шаблон, который позволяет мне поместить тест для параметров в нужное место, чтобы я мог запрашивать у пользователя все, что угодно (и позволяя мне беспокоиться о том, что мой заставка в настоящее время является самым верхним для моего приложения).

Я ценю, что это немного расплывчато, поэтому мы будем обновлять его кодом по мере продвижения.

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Ответ Фредрика Мёрка в порядке, но если вы хотите использовать каркас приложения, вы не можете использовать sub main и иметь форму запуска. Простой, но очень технологичный способ (при условии, что основная форма заполняется файлами, которые вы хотите проверить):

'In the main form load: do not do anything.

.

'In the main form activated (pseudocode):
 While VerifyFiles = NotThere
  if AskForNewLocationsDialog() = Cancel
   me.close and exit sub
  end if
 end while
 Initialize form from datafiles (if that is what you need)

Если у вас много обновлений и вы не хотите, чтобы они появлялись, поместите все свои элементы управления на панель, которая заполняет форму (dock = fill), и скрывайте ее, пока не будете готовы. Вы можете даже поместить «загрузочное» сообщение или индикатор выполнения в середине формы под ним (но если вы загружаете в поток GUI, вам нужно добавить туда DoEvent. Но так как никаких элементов управления, кроме закрывающего X, не видно, закрытие и выход из цикла загрузки - это все, что вам нужно будет проверить после событий).

Конечно, если ваша программа уже написана, и в зависимости от того, что вы пытаетесь сделать, это может быть легче сказать, чем сделать; однако вы пишете, как будто вы только начинаете.

1 голос
/ 18 марта 2010

Я бы сделал это в методе Main, прежде чем загружать основную форму:

static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    if (VerifyPrerequisites())
    {       
        Application.Run(new MainUI());
    }
}

Метод VerifyPrerequisites выполняет проверку настроек, файлов и т. Д. И возвращает true, если приложение должно работать.

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