LoginForm hides or closes automatically when the ShowInTaskBar property is false
LoginForm hides or closes automatically when the ShowInTaskBar property is false
I am developing an application in C# Winforms with system login where I have two forms, one being the main MainForm and the other which is for the login LoginForm.
MainForm
LoginForm
This application has a Modern Flat UI Design interface, so it wants the LoginForm form is displayed in front of the MainForm form, to not display its icon in the taskbar and not allow the user to interact with MainForm to display it's been use of the method ShowDialog();.
Modern Flat UI Design
LoginForm form
MainForm
MainForm
ShowDialog();
LoginForm compacted code:
LoginForm
public partial class LoginForm : Form
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
this.ShowInTaskbar = this.ShowIcon = false;
}
}
MainForm compacted code:
MainForm
public partial class MainForm : Form
{
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
new LoginForm().ShowDialog();
//new LoginForm().ShowDialog(this);
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
//new LoginForm().ShowDialog();
//new LoginForm().ShowDialog(this);
}
}
My problem is that nothing else to start MainForm, shows the LoginForm for about 2 seconds and then hides it, then, I minimize the MainForm to verify that the LoginForm has not moved behind MainForm, but it turns out that LoginForm is not there.
MainForm
LoginForm
MainForm
LoginForm
MainForm
LoginForm
If I remove the property ShowInTaskbar = false; then everything works normally, but the LoginForm is displayed in the taskbar which is precisely what I do not want.
ShowInTaskbar = false;
LoginForm
So, how can I show my LoginForm in front of MainForm without LoginForm appearing in the taskbar?
LoginForm
MainForm
LoginForm
Note:
Yes, while the LoginForm is not closed, the user not may interact with MainForm and the only way to close the LoginForm is logging properly or by clicking on the button close the LoginForm calling Application.Exit();.
LoginForm
MainForm
LoginForm
LoginForm
Application.Exit();
Also, I've tried to hide the MainForm to start with this.Hide(); but equally LoginForm disappears.
MainForm
this.Hide();
LoginForm
@Ctznkane525 is C# not VB and yes, I already tried with
new LoginForm().ShowDialog(this);, but, the result is the same– Héctor Manuel Martínez Durán
Jun 29 at 17:59
new LoginForm().ShowDialog(this);
Can''t reproduce. When I override
OnShown, the LoginForm shows on top of MainForm without issue, has no task bar button or icon, and does not disappear. Could be an issue with the way you are launching MainForm; please post that portion of your code.– John Wu
Jun 29 at 22:10
OnShown
LoginForm
MainForm
It seems you should set
ShowInTaskbar of the modal form before creating its handle.– Reza Aghaei
Jun 30 at 5:14
ShowInTaskbar
2 Answers
2
Set ShowInTaskBar and ShowIcon in constructor of your dialog:
ShowInTaskBar
ShowIcon
public partial class LoginForm : Form
{
public LoginForm()
{
InitializeComponent();
this.ShowInTaskbar = false;
this.ShowIcon = false;
}
}
And then show it in Shown method of the main form:
Shown
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
new LoginForm().ShowDialog();
}
}
It seems you should set
ShowInTaskbar of the modal form before creating its handle.– Reza Aghaei
Jun 30 at 5:14
ShowInTaskbar
You can refactor the code based on your requirement. I simply call it like
new Form(){ShowInTaskbar = false, ShowIcon=false}.ShowDialog();– Reza Aghaei
Jun 30 at 5:43
new Form(){ShowInTaskbar = false, ShowIcon=false}.ShowDialog();
Thanks Reza Agaehi ;)
– Héctor Manuel Martínez Durán
Jun 30 at 6:15
You're welcome :)
– Reza Aghaei
Jun 30 at 6:15
You could try setting the parent of the login form to the main form.
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

new LoginForm().ShowDialog(Me); ? then it wont go behind the mainform
– Ctznkane525
Jun 29 at 17:29