namespace JadeComplete
{
public partial class Form1 : Form
{
string curPass = "someDefaultPass";
public Form1()
{
string fileName1 = "authentication.txt";
if (System.IO.File.Exists(fileName1))
curPass = System.IO.File.ReadAllText(fileName1);
if (System.IO.File.ReadAllText(fileName1) == curPass)
{
Hide();
Form2 frm = new Form2();
frm.Show();
}
}
}
}
我不知道为什么这不起作用。我已经尝试了多种方法,但无法找出问题所在。
我有2个Forms
显示应该何时删除一个,有问题的区域就在public Form1()
之后
答案 0 :(得分:0)
这是表单中事件的顺序:
您正在尝试将表单设置为在Form.Load试图将visible设置为true时隐藏。
最好使用Form.Shown
或重写OnVisibleChanged事件,而不要使用构造函数。
我还将IO操作封装在try {}捕获和传送异常中,例如FileNotFound或常规IOException。
更多信息在这里:
https://docs.microsoft.com/en-us/dotnet/framework/winforms/order-of-events-in-windows-forms
答案 1 :(得分:0)
@ Exivent,Gauravsa的答案是正确的,您正在尝试隐藏显示的表单。 您可以在Shown事件中为您编写代码,我的示例代码-
namespace HideForm1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
try
{
string defpassword = "1234"; //your default password
string passwordfromfile = "1234"; //password you are reading from .txt file
if (passwordfromfile == defpassword)
{
Form2 objForm2 = new Form2();
Hide();
objForm2.Show();
}
}
catch (Exception ex)
{
MessageBox.Show("Exception caught: " + ex.Message);
}
}
}
}