Как скрыть окно windows forms

128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

1

Скрыть окна

21.09.2011, 09:26. Показов 8528. Ответов 13


Студворк — интернет-сервис помощи студентам

Есть WindowsForm приложение. Как сделать так, чтобы при его запуске не показывались формы?



0



6046 / 3455 / 335

Регистрация: 14.06.2009

Сообщений: 8,136

Записей в блоге: 2

21.09.2011, 09:35

2

Самый простой вариант — не писать WindowsForm приложение.

Это я к тому, что вопрос нужно правильно формулировать.

Что значит «не показывались»? Были в свернутом виде? Были совсем невидимыми? Не показывались в панели задач?

Какая стоит задача, и что делает приложение?



0



128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

21.09.2011, 09:38

 [ТС]

3

приложение парсит страницы из интернета получая информацию нужную! Писать на WF начал, т.к. задумка сначала была одна. Теперь мне нужно, чтобы вызывая данную программу из другого приложения, окна не были видны везде (в панели, на рабочем столе).



0



6046 / 3455 / 335

Регистрация: 14.06.2009

Сообщений: 8,136

Записей в блоге: 2

21.09.2011, 09:47

4

У формы есть свойство Visible



0



128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

21.09.2011, 09:52

 [ТС]

5

это свойство не помогает, главная форма видима остается!



0



iva_a

166 / 138 / 23

Регистрация: 02.01.2011

Сообщений: 913

21.09.2011, 13:57

6

galexser, попробуйте так

C#
1
2
3
4
        
 private void button1_Click(object sender, EventArgs e)
        {
    Form1.ActiveForm.Visible = false;

}



1



128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

21.09.2011, 15:43

 [ТС]

7

Цитата
Сообщение от iva_a
Посмотреть сообщение

private void button1_Click(object sender, EventArgs e)
{
Form1.ActiveForm.Visible = false;
}

так не пойдет, нужно чтобы сразу форма была скрыта



0



6046 / 3455 / 335

Регистрация: 14.06.2009

Сообщений: 8,136

Записей в блоге: 2

21.09.2011, 15:52

8

galexser, зачем писать оконное приложение, если окна не должны отображаться?



0



128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

21.09.2011, 15:56

 [ТС]

9

Изначально планировалось использовать приложение немного в других целях



0



Fredi

Заблокирован

21.09.2011, 16:41

10

C#
1
2
3
4
5
6
7
8
9
        protected override CreateParams CreateParams
        {
            get
            {
                CreateParams cp = base.CreateParams;
                cp.ExStyle |= 0x00080000; 
                return cp;
            }
        }

Но я обычно делаю совсем маленькое окошко, убираю заголовок и делаю это окно полностью прозначным. При запуске ничего не увидишь.



0



iva_a

166 / 138 / 23

Регистрация: 02.01.2011

Сообщений: 913

26.09.2011, 12:40

11

Как-то так

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            // Убираем кнопки свернуть, развернуть, закрыть.
            this.ControlBox = false;
            // Убираем заголовок.
            this.Text = "";
            //скрыть с панели задач:
            this.ShowInTaskbar = false;
            //делаем окно прозрачным
            this.Opacity= 0;
        }
    }



0



128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

26.09.2011, 12:46

 [ТС]

12

можно проще!
Удалить все формы из проекта, необходимый код реализовать в виде класса и его вызывать из файла Program.cs

Добавлено через 29 секунд
тему можно закрыть



0



Эксперт .NET

4431 / 2091 / 404

Регистрация: 27.03.2010

Сообщений: 5,657

Записей в блоге: 1

26.09.2011, 17:47

13

А разве консольное окно не появляется? У меня появляется, правда его можно скрыть при помощи WinAPI, где-то у меня был такой пример.



0



galexser

128 / 128 / 8

Регистрация: 24.11.2010

Сообщений: 237

26.09.2011, 21:14

 [ТС]

14

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

C#
1
2
3
Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

Добавлено через 1 час 54 минуты
Кому-нибудь будет может полезно! Есть еще один способ не показывать форму!
У формы делаем свойство ShowInTaskbar = false, свойство FormBorderStyle = SizableToolWindow и свойство WindowsState = Minimized. И будет счастье



0



Asked

Viewed
1k times

I want to hide my form when I press a button inside the form. When I do this,
something must be shown in the taskbar, and if I click that thing form will again come into visible state.

Edit: I am not supposed to minimize or resize the form.

  • c#

1

  • taskbar ? do you maybe mean in the system tray?

    Mar 5, 2009 at 7:12

6 Answers

You have two options:

  1. Use the standard minimizing behavior of the Windows Forms. In your button click handler, set the Form.WindowState property to FormWindowState.Minimized or just let the user use the standard minimize button. This will «hide» the form, but will leave its button on the taskbar, and the user can click it to bring the form back.

EDIT: Based on your question edit, you should use NotifyIcon.

  1. Close the form and add a notify icon in the task bar notification area (aka «system tray»). To do that, you need to add an instance of the NotifyIcon component to your form. Then, on your button click handler, you will call Form.Close to close the form. When the user wants to bring the form back, they will click on the syastem tray icon representing your app and you will open the form.

Here’s an VB.NET example of how to do this. It shouldn’t be hard to translate in C#. You can also search for NotifyIcon to see more examples.

answered Mar 5, 2009 at 7:22

Franci Penov's user avatar

Franci PenovFranci Penov

75.1k18 gold badges133 silver badges169 bronze badges

//this is Form object
//Option 1

this.Hide();

//Option 2

this.Visible = false;

answered Mar 5, 2009 at 7:23

NileshChauhan's user avatar

NileshChauhanNileshChauhan

5,4792 gold badges29 silver badges43 bronze badges

Does standard minimize button comply with the requirements?

answered Mar 5, 2009 at 7:10

Alexander Prokofyev's user avatar

in the button code:

        FormBorderStyle = FormBorderStyle.None;
        Width = 0;
        Height = 0;

in say… the Activated form event:

        FormBorderStyle = FormBorderStyle.Fixed3D;
        Width = 800;
        Height = 500;

Would this effect be right for you?

answered Mar 5, 2009 at 7:22

White Dragon's user avatar

White DragonWhite Dragon

1,2571 gold badge8 silver badges20 bronze badges

5

  • The question is: keep the form in the task bar and hide the form, your answer is incorrect and the code i gave gives the effect (needs changes to not size the form on load etc) So really… vote me down for giving a correct answer? are YOU kidding?

    Mar 5, 2009 at 7:26

  • and yes i know the width and height change is in there.. but i took a punt on the border style being enough to ignore that requirement… hence my question «Would this effect be right for you?» But thanks for the vote down, i love you

    Mar 5, 2009 at 7:28

  • Technically, overlaying Notepad on top of the form would also achieve the desired effect. Would you consider it the right approach? :-)

    Mar 5, 2009 at 7:31

  • he he, well considering the form won’t be hidden when you move notepad… no :P. the requirement for not allowing to minimize the form is weird but thats exactly the effect asked for. so in the couple of mins i had to think that code at least works.

    Mar 5, 2009 at 7:37

  • Also i wholeheartedly agree the system tray is much better solution (and more standard!) if thats an option…

    Mar 5, 2009 at 7:37

As nils said.

Hide();
// or 
Visible = false;

NotifyIcon trayIcon;
//....
trayIcon.Visible = true;

Show/hide the trayicon depending on forms visibility.

Use the Form’s property «Opacity».

// Hide your windows frame
form1.Opacity = 0; 

/*
 * Your actions Here
 */

// Show your windows frame
form1.Opacity = 1.0;

  • The Overflow Blog
  • Featured on Meta

Related

Hot Network Questions

  • Closest in meaning to «It isn’t necessary for you to complete this by Tuesday.» — is the question’s answer wrong?

  • mv a bunch of files, but ask for each file

  • What do to with this vent?

  • Business Schengen Visa for Tourism Purpose

  • What would be an appropriate size for an interplanetary bulk cargo ship?

  • What do countries gain from UN peacekeeping deployment?

  • Beacon contract contructor seems to call address 0x02?

  • What is a safe weight for front rack + luggage for a steel race bike fork?

  • How to force the misalignment of subscript and superscript

  • Will 42.5 in vanity fit in 42 in space?

  • Idiom for unexpected solution?

  • How to plot railway tracks?

  • Sum the inverse of the successor of the square of the natural numbers

  • Assumption of Normality — do the residuals need to be normally distributed for each independent variable (or each level of an IV)?

  • Why do some Chinese shows avoid using real toponyms?

  • Colouring a rug

  • How to stop Steam trying to read from a non-existent drive?

  • How can unrelated language families exist?

  • Understanding the diffusion error of numerical schemes

  • What could be this 1990s MS-DOS (or maybe Windows) 3D FPS (Doom WAD maybe?) with floating gray spiky polyhedra that I think was set in cyberspace?

  • What does «I had found the time to hover at some half a dozen jewellers’ windows» mean in this context?

  • Why did Vincent risk his chance of going to space by giving his true urine sample to Dr. Lamar in the last scene?

  • Electric Dryer Issue: Clothes Damp in Sensor Drying Mode

  • How to take good photos of stars out of a cockpit window using the Samsung 21 ultra?

more hot questions

Question feed

Your privacy

By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.

I am trying to make a desktop application that will be hidden but will display only after a time interval. I am trying to set Visible =false at window load event but it still displays.

Rick Sladkey's user avatar

Rick Sladkey

34k6 gold badges71 silver badges95 bronze badges

asked Dec 29, 2010 at 17:49

Tasawer Khan's user avatar

Tasawer KhanTasawer Khan

6,0247 gold badges46 silver badges69 bronze badges

1

The Visible property is a big deal in Winforms, setting it to true is what causes the native Windows window to be created. One side effect of which is that setting it to false in the OnLoad method or Load event doesn’t work. There’s nothing special about Hide(), it just sets Visible to false and thus doesn’t work either.

Overriding SetVisibleCore() is a way to do it. It is however important that you still let the native window get created. You cannot Close() the form otherwise. Make it look like this:

    protected override void SetVisibleCore(bool value) {
        if (!IsHandleCreated && value) {
            value = false;
            CreateHandle();
        }
        base.SetVisibleCore(value);
    }

You can now call Show() or set Visible = true to make the window visible any time you wish. And call Close() even if you never made it visible. This is a good way to implement a NotifyIcon with a popup window that only is shown through a context menu.

Do note that this has a side-effect, the OnLoad() method and Load event won’t run until the first time it actually gets visible. You may need to move code.

answered Dec 29, 2010 at 18:18

Hans Passant's user avatar

Hans PassantHans Passant

924k146 gold badges1696 silver badges2536 bronze badges

For WinForms applications I have found that the easiest way to control the start-up visibility is to override the SetVisbileCore method.

Here is a simple example, the form will show after 5 seconds

using System;
using System.Windows.Forms;

namespace DelayedShow
{
  public partial class Form1 : Form
  {
    private bool _canShow = false;
    private Timer _timer;

    public Form1()
    {
      InitializeComponent();
      _timer = new Timer();
      _timer.Interval = 5000;
      _timer.Tick += new EventHandler(timer_Tick);
      _timer.Enabled = true;
    }

    void timer_Tick(object sender, EventArgs e)
    {
      _canShow = true;
      Visible = true;
    }

    protected override void SetVisibleCore(bool value)
    {
      if (_canShow)
      {
        base.SetVisibleCore(value);
      }
      else
      {
        base.SetVisibleCore(false);
      }
    }
  }
}

SwDevMan81's user avatar

SwDevMan81

48.9k22 gold badges151 silver badges184 bronze badges

answered Dec 29, 2010 at 18:00

Chris Taylor's user avatar

Chris TaylorChris Taylor

52.7k10 gold badges78 silver badges89 bronze badges

2

you can try this as well..

    public partial class Form1 : Form
{
public delegate void myHidingDelegate();

    public Form1()
    {
        InitializeComponent();
        myHidingDelegate dlg = new myHidingDelegate(mymethodcall);
        dlg.BeginInvoke(null, null);
    }

 public void mymethodcall()
    {
        myHidingDelegate dlg1 = new myHidingDelegate(HideForm);
        this.Invoke(dlg1);
    }

     public void HideForm()
    { this.Hide(); }
}

The only issue with this: Form flickers for a moment and disappears

answered Feb 3, 2011 at 12:12

Sree's user avatar

Did you try this.Hide() instead of Visible = false?

Also another option can be to start the application without passing any form object in it.

Application.Run();

Wait for some time (using a Timer), and open your form.

answered Dec 29, 2010 at 18:04

decyclone's user avatar

decyclonedecyclone

30.4k6 gold badges63 silver badges80 bronze badges

4

In your Main method, using Application.Run() instead of Application.Run(new Form1()). Then at some later time use new Form1() and form1.Show().

answered Dec 29, 2010 at 18:03

Rick Sladkey's user avatar

Rick SladkeyRick Sladkey

34k6 gold badges71 silver badges95 bronze badges

Placing Your C# Application in the System Tray

  1. To get started, open an existing C# Windows form (or create a new one).
  2. Open the Visual Studio Toolbox.
  3. Drag a NotifyIcon control onto the form. The control will named notifyIcon1 by default and placed below the form because it has no visual representation on the form itself.
  4. Set the NotifyIcon control’s Text property to the name you want to appear when the user pauses the mouse over the application’s icon. For example, this value could be «KillerApp 1.0».
  5. Set the control’s Icon property to the icon that you want to appear in the System Tray.

Tip: If you have a BMP file that you
want to convert to an icon file, I
highly recommend the QTam Bitmap to
Icon 3.5 application.

— Add an event handler for the form’s Resize event that will hide the application when it’s minimized. That way, it won’t appear on the task bar.

private void Form1_Resize(object sender, System.EventArgs e)
  {
     if (FormWindowState.Minimized == WindowState)
        Hide();
  }

— Add an event handler for the NotifyIcon.DoubleClick event and code it as follows so that the application will be restored when the icon is double-clicked.

private void notifyIcon1_DoubleClick(object sender,
                                       System.EventArgs e)
  {
      Show();
      WindowState = FormWindowState.Normal;
  }

answered Dec 29, 2010 at 18:34

Ayman Odeh's user avatar

WinForms открыть/скрыть окна

WinForms — это Windows Forms, технология создания пользовательских окон и диалоговых окон в приложениях на платформе .NET Framework от Microsoft. WinForms позволяет легко и быстро создавать пользовательский интерфейс, задавать расположение элементов управления и обрабатывать пользовательский ввод. В данной статье мы рассмотрим, как открывать и скрывать окна в WinForms.

Открытие окна

Открытие окна в WinForms можно осуществить несколькими способами. Рассмотрим каждый из них подробнее.

1. Создание экземпляра класса формы и вызов метода Show или ShowDialog.

Первый способ открытия окна — это создание экземпляра класса формы и вызов метода Show или ShowDialog. Метод Show открывает форму и продолжает работу программы, не останавливая ее выполнение. Метод ShowDialog же открывает форму и блокирует выполнение программы до закрытия окна.

В качестве примера создадим форму Form1 с одной кнопкой и обработчиком события Click, который вызывает метод Show у другой формы Form2:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show();
    }
}

2. Использование метода Application.Run для запуска главной формы.

Второй способ — это использование метода Application.Run для запуска главной формы. Если мы имеем несколько форм, то одну из них можно назвать главной, и приложение будет запускаться с этой формы.

В качестве примера создадим две формы — Form1 и Form2. В Form1 создадим кнопку, которая будет открывать Form2. В методе Main мы создадим экземпляр Form1 и вызовем метод Application.Run:

static class Program
{
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Form1 form1 = new Form1();
        Application.Run(form1);
    }
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Show();
    }
}

3. Использование метода Form.ShowDialog.

Третий способ — использование метода Form.ShowDialog. Этот метод открывает диалоговое окно, которое блокирует выполнение приложения, пока окно не будет закрыто.

В качестве примера создадим форму Form1 с кнопкой, которая будет открывать диалоговое окно Form2:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.ShowDialog();
    }
}

Скрытие окна

Скрыть окно в WinForms можно несколькими способами. Рассмотрим каждый из них подробнее.

1. Использование метода Form.Hide.

Первый способ скрытия окна — это использование метода Form.Hide. Данный метод скрывает окно, но приложение продолжает работать.

В качестве примера создадим форму Form1 с кнопкой, которая будет скрывать форму:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Hide();
    }
}

2. Использование метода Form.Close.

Второй способ — это использование метода Form.Close. Данный метод закрывает окно и освобождает все ресурсы, связанные с этим окном.

В качестве примера создадим форму Form1 с кнопкой, которая будет закрывать форму:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        this.Close();
    }
}

3. Использование свойства Form.Visible.

Третий способ — это использование свойства Form.Visible. Данное свойство определяет, видимо ли окно. Если значение свойства равно false, то окно скрыто, иначе — открыто.

В качестве примера создадим форму Form1 с кнопкой, которая будет менять значение свойства Visible формы Form2:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.Visible = !form2.Visible;
    }
}

Вывод

В данной статье мы рассмотрели три способа открытия окон и три способа скрытия окон в WinForms. Каждый из них имеет свои особенности и используется в зависимости от требований приложения. С помощью WinForms легко и быстро создавать интерфейсы для Windows-приложений, что делает эту технологию очень популярной и востребованной среди разработчиков.

Step 1Click New Project, then select Visual C# on the left, then Windows and then select Windows Forms Application. Name your project «HideApplication» and then click OK

hide windows application in c#Step 2: Open your form, then add code to Show and Load event handler as below

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace HideApplication
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Shown(object sender, EventArgs e)
        {
            //Hide your windows forms application
            this.Hide();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Thread.Sleep(5000);//5s
            MessageBox.Show("You can't see me !", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

VIDEO TUTORIALS

  • Как скрыть нижнюю строку в windows 10
  • Как скрыть нижнюю панель в windows 10 в игре
  • Как скрыть ненужные диски в моем компьютере windows 10
  • Как скрыть неиспользуемые диски в windows 10
  • Как скрыть иконки на панели задач в windows 10