Запуск C# winforms (Всплеск) форма, не скрывающаяся

Вы можете просто добавить значение token в цикл foreach:

foreach ($token_values as $token) {
    $request[] = array_merge(array('token' => $token), getCards($merchantId, $merchantKey, $token));
}
9
задан TK. 4 February 2009 в 10:12
поделиться

4 ответа

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

Я выполняю форму всплеска на отдельном потоке (это - класс SplashForm):

class SplashForm
{
    //Delegate for cross thread call to close
    private delegate void CloseDelegate();

    //The type of form to be displayed as the splash screen.
    private static SplashForm splashForm;

    static public void ShowSplashScreen()
    {
        // Make sure it is only launched once.

        if (splashForm != null)
            return;
        Thread thread = new Thread(new ThreadStart(SplashForm.ShowForm));
        thread.IsBackground = true;
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();           
    }

    static private void ShowForm()
    {
        splashForm = new SplashForm();
        Application.Run(splashForm);
    }

    static public void CloseForm()
    {
        splashForm.Invoke(new CloseDelegate(SplashForm.CloseFormInternal));
    }

    static private void CloseFormInternal()
    {
        splashForm.Close();
        splashForm = null;
    }
...
}

и основная функция программы похожа на это:

[STAThread]
static void Main(string[] args)
{
    SplashForm.ShowSplashScreen();
    MainForm mainForm = new MainForm(); //this takes ages
    SplashForm.CloseForm();
    Application.Run(mainForm);
}
21
ответ дан 4 December 2019 в 07:35
поделиться

Я полагаю, что это мог бы быть недостаток дизайна в моем текущем дизайне!

Я думаю лучший способ достигнуть того, в чем я нуждаюсь, должен был управлять всем от MainForm. Таким образом, я могу использовать:

Application.Run(new MainForm());

Это затем будет ответственно за показ/обновление/сокрытие SplashScreen. Таким образом, у меня может быть необходимый комплекс intactions с остальной частью системы, управляемой MainForm.

1
ответ дан 4 December 2019 в 07:35
поделиться

Если я понял правильно, необходимо просто использовать Приложение. Работайте на своей основной форме. Так любое шоу Ваш всплеск сначала только при помощи чего-то как:

using(MySplash form = new MySplash())
   form.ShowDialog();

И затем закройте его вручную в MySplash каждый раз, когда Вы хотите.

Или покажите его в своем основном обработчике событий Загрузки форм и затем ожидайте его для закрытия или безотносительно пока Вы не позволите методу Загрузки завершиться. (Установка Possibly, Видимая ко лжи перед показом его и назад к истинному впоследствии.

2
ответ дан 4 December 2019 в 07:35
поделиться

Это очень важно для предотвращения того, чтобы ваш экран-заставка перехватил ваше внимание и отодвинул вашу основную форму на задний план после ее закрытия:

protected override bool ShowWithoutActivation {
    get { return true; }
}

Добавьте это в класс формы заставки.

5
ответ дан 4 December 2019 в 07:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: