我正在尝试创建包含2个项目的新解决方案。 Solution Startup Project是“Main Component”项目,另一个项目是“Login Function”项目。
“主要组件”中的基本MainForm在“登录功能”中调用LoginForm当解决方案启动时。我在MainForm构造函数中编写了一个条件来调用LoginForm并且工作正常但是当我从LoginForm中逃脱时,我收到了类似于Program.cs中的错误。因为如果condition为true,则initializeComponent()部分工作。我不知道是否有其他方法可以做到这一点。
我知道解决方案正在运行,但如何修复此Dispose问题?
Program.cs的;
namespace Main_Component
{
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
using (var mainForm = new MainForm())
{
Application.Run(mainForm);
}
}
}
}
无法访问已处置的对象。\ r \ n对象名称:'MainForm'。
public MainForm()
{
try
{
var _lForm=new LoginForm();
_lForm.ShowDialog();
if (LoginForm._loginSuccess)
{
InitializeComponent();
}
else
{
this.Close();
}
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
答案 0 :(得分:0)
您未正确处理IDisposable组件的主要问题。
您需要拥有更好的结构,因此您不需要手动更新组件。
但您可以使用以下using
用法修复exsting conde:
public MainForm()
{
try
{
using(var _lForm=new LoginForm())
{
_lForm.ShowDialog();
if (LoginForm._loginSuccess)
{
InitializeComponent();
}
else
{
this.Close();
}
}
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}