To make the main form of a Windows application invisible when the application starts, you have to move the application's startup logic into a separate class. You cannot simply set its Visible property to false.
After you have separated the lifetime of the application from the lifetime of the form, you can make forms visible (and invisible), because the application will end when you "close" the class that was used for application startup.
Note Because a module is invisible when its code is running, the procedure that follows includes a step for adding a message box to the startup module simply to demonstrate that the application is running.
To set a form to be invisible at its inception
Do one of the following:
In C#, create a new class.
Within the module or class, develop a Main subroutine that can act as the startup object for the project. For example, the following code shows how you might approach this.
Code:
// This class is added to the namespace containing the Form1 class.
class MainApplication
{
public static void Main()
{
// Instantiate a new instance of Form1.
Form1 f1 = new Form1();
// Display a messagebox. This shows the application
// is running, yet there is nothing shown to the user.
// This is the point at which you customize your form.
System.Windows.Forms.MessageBox.Show("The application "
+ "is running now, but no forms have been shown.");
// Customize the form.
f1.Text = "Running Form";
// Show the instance of the form modally.
f1.ShowDialog();
}
}
Change the startup object for the project to be Sub Main instead of Form1. For C#, set the startup object to be ApplicationName,MainApplication (as per the naming of the class in the code above).
When the application runs, the code within Main() executes first while the instance of Form1 lingers, hidden, until the code to show it is run. This allows you to do whatever you like within the instance of Form1 in the background without the user's knowledge.