Отображать изображение при запуске проекта - program.cs? - PullRequest
2 голосов
/ 26 сентября 2011

У меня небольшой проект Windows Forms, и теперь Iam хочет отобразить изображение при запуске проекта, я имею в виду Program.cs

Возможно ли это?

static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Image MyPrgImage = Image.FromFile("C:\\Temp\\Images\\For_Network.gif");
            ??????

            Application.Run(new Form1());
        }

Ответы [ 4 ]

6 голосов
/ 26 сентября 2011

Конечно ... Добавьте новый WindowsForm в ваш проект, назовите его SplashImageForm.Добавьте к этому элемент управления PictureBox и добавьте в него нужное изображение.Измените размер формы, установите эти SplashImageForm свойства:

FormBorderStyle - None
ShowInTaskBar - false
StartPosition - CenterScreen

Затем вы хотите показать эту форму перед Form1 и закрыть ее после истечения времени ожидания ... Например, так:

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

    SplashImageForm f = new SplashImageForm();

    f.Shown += new EventHandler((o,e)=>{
        System.Threading.Thread t = new System.Threading.Thread(() =>
            {
                System.Threading.Thread.Sleep(2000);
                f.Invoke(new Action(() => { f.Close(); }));

            });
            t.IsBackground = true;
            t.Start();
    });

    Application.Run(f);
    Application.Run(new Form1());
}

РЕДАКТИРОВАТЬ Теперь есть новый поток, который блокирует на System.Threading.Thread.Sleep(2000) на 2 секунды, и основной поток может блокироваться на Application.Run(f), как и должно быть, до SplashImageFormне закрытоТаким образом, изображение загружается основным потоком, а графический интерфейс отзывчивым.

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

Теперь изображение показывается в течение 2 секунд, а после него отображается форма Form1.

2 голосов
/ 26 сентября 2011

Вы имеете в виду заставку, верно?
Попробуйте добавить ссылку на Microsoft.VisualBasic (если это еще не сделано), а затем установите свойство WindowsFormsApplicationBase.SplashScreen.

Еще несколько очков:

  • Windows Forms не поддерживает простой и прямой заставки.
    Даже приведенное выше решение займет несколько секунд, пока не загрузится .net Framework, чтобы отобразить заставку.
  • См. Этот вопрос здесь для дополнительных примеров и важных замечаний.
  • См. Этот пример CodeProject.com для нестандартного решения
1 голос
/ 26 сентября 2011

Для загрузки и отображения изображения вам понадобится простая форма, возможно, с PictureBox. Затем удалите его, как только ваша основная форма будет загружена.

0 голосов
/ 27 февраля 2014

Просто добавьте форму Windows (пусть имя формы будет imgsplash) и из следующих параметров: -

FormBorderStyle - Нет
ShowInTaskBar - false
StartPosition - CenterScreen

в этомФоновое изображение набора форм [изображение, которое вы хотите показать при запуске приложения]

- теперь в program.cs добавьте следующие шаги: -

       static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        imgsplash f = new imgsplash();
        f.Show();
        System.Threading.Thread.Sleep(2000);
        f.Close();
        Application.Run(new Form1());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...