Всем привет.
Начал учить шарп, естественно, возникают вопросы, типа, а как правильно делать.
Итак, есть код. Идея простая и, видимо, набившая все оскомину
В приложении две формы: главная и форма логина. Нужно сначала залогиниться и по результатам показать главную форму или закрыть приложение.
Вот код:
namespace Test
{
public class MyApplicationContext : ApplicationContext
{
private LinkedList<Form> forms = new LinkedList<Form>();
private void FormClosed(Object sender, FormClosedEventArgs e)
{
LinkedListNode<Form> current = forms.Find((Form)sender);
if (current.Value != forms.Last.Value)
{
this.MainForm = current.Next.Value;
}
this.MainForm.Show();
}
public void AddForm(Form form)
{
if (forms.Count == 0)
{
forms.AddFirst(form);
this.MainForm = form;
}
else
{
forms.AddAfter(forms.Last, form);
}
form.FormClosed += this.FormClosed;
}
}
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MyApplicationContext ctx = new MyApplicationContext();
ctx.AddForm(new fmLoginForm());
ctx.AddForm(new fmMainForm());
Application.Run(ctx);
}
}
}
Ну и вопрос: что здесь не так? Нет ли проблем с памятью? Может, есть какие-то Best Practices для таких ситуаций?
Может, надо использовать List вместо LinkedList? Ну, и так далее.
Анализатор кода в VS предлагает создание форм завернуть в using, хотя сама VS генерит примерно такой же код.
24.03.11 11:57: Перенесено модератором из '.NET' — TK