Как я могу отменить Form_Load?
Как мне написать приложение, которое создает код. Я хочу, чтобы пользователь открыл приложение, а другой пользователь не может использовать приложение и получить MessageBox
с именем пользователя, который использует приложение. Для этого я использую Form_Load
событие с попыткой поймать, и это работает. Второй пользователь получает сообщение с именем другого пользователя, но форма открывается после этого. Я хочу, чтобы форма не открывалась после этого сообщения.
мой код:
private void Form1_Load(object sender, EventArgs e)
{
try
{
var stream = File.Open("lock", FileMode.OpenOrCreate,FileAccess.Read);
global_stream = stream;
string username = User.GetUsername();
string machine = Computer.GetMachineName();
TextDatei datei = new TextFile();
datei.WriteFile("user_log", "Username: " + username + " Invoicennumber: "
+ machine);
CreateCode();
}
catch (Exception)
{
TextFile file = new TextFile();
string info = datei.ReadFile("user_log");
MessageBox.Show(info);
Application.Exit();
}
}
3 ответа
Один совет для вас: вы можете выполнить необходимую загрузку в самом Init() и закрыть там саму форму, чем Load(). С этим лучше пойти.
this.Close();
Я бы сделал загрузку самой формы условной вместо ее отмены:
try
{
// Do your validation stuff here...
// The form will only show if the validation didn't throw.
Application.Run(new Form1());
}
catch (Exception)
{
TextFile file = new TextFile();
string info = datei.ReadFile("user_log");
MessageBox.Show(info);
}
Это более эффективно, так как загрузка формы полностью пропускается.
Я не буду комментировать то, что вы делаете...
... но закрыть форму просто:
private void Form1_Load(object sender, EventArgs e)
{
Boolean someCondition = true; //whatever check you're doing
if (someCondition)
{
MessageBox.Show("Some Condition Met");
this.Close();
}
else
{
this.InitialiseTheFormEtc();
}
}